Как удалить viewcontroller из разделенного контроллера представления (кнопка возврата ipad)?

Я использовал следующий код для удаления моей страницы входа из navigationcontroller(viewcontrollers) чтобы он не появлялся снова при возврате (кнопка назад).

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
NSMutableArray *VCs = [NSMutableArray arrayWithArray: self.navigationController.viewControllers];
   if ([[VCs objectAtIndex:[VCs count] - 2] isKindOfClass:[loginViewController class]]&&(VCs.count>=4))

   { [VCs removeObjectAtIndex:[VCs count] - 2];
   [VCs removeObjectAtIndex:[VCs count] - 2];
   [self.navigationController setViewControllers: VCs];
 }
NSLog(@" after :%@",VCs);
}

Это прекрасно работает для телефона. Я попробовал следующий код для Ipad

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
    {

NSMutableArray *VCs = [NSMutableArray arrayWithArray: self.splitViewController.viewControllers];
    NSLog(@" bofore :%@",VCs);
    if ([[VCs objectAtIndex:[VCs count] - 2] isKindOfClass:[loginViewController class]]&&(VCs.count>=4))
    {

        [VCs removeObjectAtIndex:[VCs count] - 2];
        [VCs removeObjectAtIndex:[VCs count] - 2];

        [self.navigationController setViewControllers: VCs];
        NSLog(@" after :%@",VCs);

    }

}

но содержимое изменяемого массива VC в этом случае UINavigationControllar объекты. Кто-нибудь знает, как сделать то же самое для IPad? Спасибо заранее..

1 ответ

Решение

В iPhone NSMutableArray *VCs = [NSMutableArray arrayWithArray: self.navigationController.viewControllers]; Корневой контроллер является контроллером навигации, поэтому с помощью вышеприведенного оператора вы получите View Controllers в его стеке.

В iPad NSMutableArray *VCs = [NSMutableArray arrayWithArray: self.splitViewController.viewControllers]; Корневой контроллер - это контроллер splitview, который содержит стек контроллеров навигации, поэтому в массиве находятся контроллеры навигации. Добавьте строки кода ниже и используйте массив ViewControllers для извлечения вашего собственного viewcontroller.

UINavigationController *navContoller = self.splitViewController.viewControllers[0]; // Get the Navigation Controller
NSMutableArray *viewControllers = [NSMutableArray arrayWithArray: navController.viewControllers];
Другие вопросы по тегам