我正在使用ios的项目并且在其中做得很好。但现在我卡在一个我有三种观点的地方(Say firstview,2ndview,3rdview)。我使用下面的代码行从第一个视图和第三个视图导航到第二个视图。
[self.navigationController pushViewController:first view animated:YES];
如何从第一个视图或第三个视图导航时检查第二个视图。所以我可以使用它的特定条件。 所以请帮我解决这个问题。你的帮助会非常明显。
答案 0 :(得分:3)
在第二个View控制器中获取变量。在创建对象时,请在其中设置适当的值。稍后当它被推动时,你可以使用该值来做出正确的决定。
在FirstViewController文件中,您将写下以下行:
SecondController *controller = [[SecondController alloc]init];
controller.flag = 1; //That means you came here from viecontroller 1
[self.navigationController pushViewController:controller animated:YES];
在ThirdViewcontroller的文件中,您将写下以下行:
SecondController *controller = [[SecondController alloc]init];
controller.flag = 3; //That means you came here from viecontroller 3
[self.navigationController pushViewController:controller animated:YES];
答案 1 :(得分:0)
尝试安排事物,以便2ndView不知道1stView或3rdView,而只是根据它的配置方式改变它的行为。所以,让我们说当你从1stView导航到2ndView时,第二个应该以绿色背景显示,当你从第三个到达时它应该使用蓝色代替。不要告诉第二个控制器在它之前,让前面的控制器告诉第二个使用什么背景颜色。对于2ndView行为的任何其他方面也是如此。
这样做的好处是你可以改变第一个或第三个而不必改变第二个中的任何东西,你可以在以后添加也使用2ndView的4thView或5thView而不必更改2ndView。
答案 2 :(得分:0)
实现方法 - navigationController:willShowViewController:animated:来自UINavigationControllerDelegate协议参考。在此方法中,您可以使用UINavigationController的多个属性检查导航堆栈以获取当前视图控制器。一个例子是访问visibleViewController属性。
正如@Apurv指出的那样,您需要某种标识符机制才能知道调用来自哪个视图控制器。例如:viewController.view.tag