我使用情节提要在 Xcode 中创建了一个项目。我使用单击和拖动方法在两个视图控制器之间创建了一个 segue,并带有一个按钮。但是,为了使 segue 发生,我希望满足某些条件。所以我已经将按钮编码为 IB 动作,并在实现文件中编写了条件代码。如果不满足条件,则会弹出警报视图,我不希望发生转场。但如果条件得到满足,那么我确实希望继续发生。
有没有办法以编程方式命令 segue 在 IB 动作函数中发生或不发生?或者任何其他方式来获得相同的结果?
谢谢!任何帮助表示赞赏!
我使用情节提要在 Xcode 中创建了一个项目。我使用单击和拖动方法在两个视图控制器之间创建了一个 segue,并带有一个按钮。但是,为了使 segue 发生,我希望满足某些条件。所以我已经将按钮编码为 IB 动作,并在实现文件中编写了条件代码。如果不满足条件,则会弹出警报视图,我不希望发生转场。但如果条件得到满足,那么我确实希望继续发生。
有没有办法以编程方式命令 segue 在 IB 动作函数中发生或不发生?或者任何其他方式来获得相同的结果?
谢谢!任何帮助表示赞赏!
我找到了一个很好的解决方案,有人发布了......创建一个源自原始视图控制器的状态栏的 segue,给它一个标识符,然后在操作按钮中添加此代码:
[self performSegueWithIdentifier:@"identifierName" sender:sender];
效果很好!
您可以通过继承 UIStoryboardSegue 并将 segue 样式与属性检查器中的类名一起设置为“自定义”来创建自定义 segue。然后您可以覆盖 perform 方法,以便在执行 segue 之前查看您的条件是否满足。例如
- (void) perform {
if (...) {
[[self sourceViewController] presentModalViewController:[self destinationViewController] animated:YES];
}
}
或者,只要不满足您的条件,您就可以禁用该按钮。也许这是更好的方法,因为从那时起,用户有一个视觉指示表明 segue 不会发生,而不是在按下按钮后得到负面反馈。