我有一个视图控制器(A),它包含2个按钮,可以将视图推送到2个其他视图控制器(B和C)。视图控制器B可以将视图推送到视图控制器C,并且视图控制器C也可以将视图推送到视图控制器B.我具有圆形导航。所有视图控制器都有自己的导航控制器。我用ARC。 我怎么处理这个?感谢。
答案 0 :(得分:2)
您应该只使用一个UINavigationController
。使用该控制器,将A
控制器设置为其根控制器。从该视图控制器,您可以通过调用C
来推送具有相同导航控制器的“B”或[self.navigationController pushViewController:yourDesiredViewController animated:YES];
控制器。但当你yourDesiredViewController
并且你从这里推出另一个viewController
时,你可能有来自同一个viewController
并且你的viewControllers
也会相同navigationController
堆栈secondViewController
。因此,为避免这种情况,您可以在//If the user has chosen to add new user then the viewcontroller will be popped....
for (UIViewController *aVC in self.navigationController.viewControllers)
{
if ([aVC isKindOfClass:[DesiredViewController class]])
{
[self.navigationController popToViewController:aVC animated:YES];
return;
}
}
[self.navigationController pushViewController:yourDesiredViewController animated:YES];
(B)或(C)
yourDesiredViewController
如果它已经存在,则会弹出yourDesiredViewController
或者它会推送B
因为它不在您的堆栈中。在C
和{{1}}控制器上执行此操作。