【发布时间】:2015-12-29 08:49:49
【问题描述】:
我的 iOS 应用程序出现导航问题。我有带有菜单项表格视图的滑动菜单。点击其中一个项目会触发 segue,它将新的视图控制器推入堆栈。问题是我可以在同一个堆栈上两次推送同一个视图控制器。如果我选择菜单项“A”,则将相应的视图控制器推送到导航堆栈上。从这个新推送的视图控制器中,我还可以选择相同的“A”菜单项并推送与最顶层视图控制器相同类的新距离。我怎样才能防止这种情况?
无效的解决方案:
检查导航堆栈顶部控制器的类。但问题是我只知道 segue 的标识符(NSString* 对象),无法获取有关目标视图控制器类的信息。我可以检查该类的唯一地方是方法:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
但我无法阻止执行此方法的转场。
我尝试在属性中保存上次执行的 segue,但它不起作用,因为当我按下“A”视图控制器,然后按下“B”视图控制器,然后按下返回按钮时,我将无法再次按下 B错了:)
【问题讨论】:
-
我通过检查堆栈中的 ViewControllers 数组来管理类似的东西。
self.navigationController.viewControllers
标签: ios objective-c segue uistoryboard uistoryboardsegue