我是编码Objective-C的新手,我正在尝试使用pop来viewController
。要点击按钮时执行此操作,请使用
[self.navigationController popToViewController:(what goes here) animated:YES];
我知道它有一个UIViewController*
,但我想知道我在哪里声明这个以及我将使用什么代码来声明它。
我的基本故事板是我有4个视图控制器A,B,C,D和A是推到B的根,它推到C推到D,我的按钮在D上,我试图回弹到B.索引方法中的对象不起作用,因为它有时不会A->B->C->D
A->C->B->D
{<1}}所以
[self.navigationController popToViewController: [self.navigationController.viewControllers objectAtIndex:2] animated:YES];
所以这不起作用。
提前感谢您的帮助。对不起,如果这个问题太基础了。
答案 0 :(得分:1)
您需要一种方法来找到要弹出的所需视图控制器。
-(IBAction)popToDesiredViewController:(id)sender
{
UIViewController *desiredVC = nil;
// LOOK AT ALL VIEW CONTROLLERS IN NAVIGATION CONTROLLER
for (UIViewController *oneVC in self.navigationController.viewControllers) {
// CHECK IF THIS IS THE VIEW CONTROLLER YOU WANT
// change this to your logic
BOOL foundDesiredVC = [oneVC isKindOfClass: [SignInVC class]];
if (foundDesiredVC) {
desiredVC = oneVC;
break;
}
}
[self.navigationController popToViewController:desiredVC animated:YES];
}
答案 1 :(得分:0)
我个人认为这不是一个基本问题,即使我遇到了这种情况。但是我通过使用“Mediator设计模式”找到了一个很好的解决方案,并通过组合方法开发我的自定义UINavigationController作为协调器:
- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated
并维护我自己的导航堆栈。
如果您的导航方式不可预测,协调员(您的自定义UINavigationController)必须能够控制您的导航。