Как удалить 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];