我的 iOS 应用程序中的导航出现问题。我有带有菜单项表格 View 的滑动菜单。点击其中一个项目会触发 segue,它将新的 View Controller 插入堆栈。问题是我可以在同一个堆栈上两次推送同一个 View Controller 。如果我选择菜单项“A”,则将相应的 View Controller 推送到导航堆栈上。从这个新推送的 View Controller 中,我还可以选择相同的“A”菜单项并推送与最顶层 View Controller 相同类的新距离。我怎样才能防止这种情况?
不工作的解决方案:
检查导航堆栈顶部 Controller 的类。但问题是我只知道 segue 的标识符(NSString* 对象),无法获取有关目标 View Controller 类的信息。我可以检查该类的唯一地方是方法:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
但我不能阻止从这种方法执行segue。
我尝试在属性中保存上次执行的 segue,但它不起作用,因为当我按下“A” View Controller ,然后按下“B” View Controller ,然后按下后退按钮时,我将无法再次按下 B,这是错误的: )
最佳答案
你需要以下方法
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
只需返回 false 即可取消 segue。你会有这样的东西(伪代码):
if ([performedSeguesArray contain:identifier])
{
return NO;
}
else
{
[performedSeguesArray addObject:identifier];
}
return YES;
关于ios - 如何防止两次执行相同的segue?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32885212/