如何取消连接到 UIButton 的 segue
Posted
技术标签:
【中文标题】如何取消连接到 UIButton 的 segue【英文标题】:How do I cancel a segue that is connected to an UIButton 【发布时间】:2012-04-07 21:20:28 【问题描述】:我正在处理这个tutorial,它展示了如何使用情节提要创建应用程序。我的 viewController 有两个 UIButtons,我已经将 segue 连接到这些 UIButtons。这些 segues 推送了一个新的 viewController。
现在我正在寻找一种方法来在某个条件成立时取消此转场。当我使用旧的 xib 文件来创建我的界面时,我能够做这样的事情:
-(IBAction)sendButton:(id)sender
if(TRUE)
// STOP !!
这不再起作用了。如何取消新viewController的推送?
【问题讨论】:
您的问题不清楚。你的元素是如何连接起来的?使导航“转到新视图”的代码在哪里? 用户可以手动取消点击响应,方法是在释放按钮之前将手指从按钮上拖开...这是您的意思吗?我同意上面的评论,这个问题不清楚。 您必须阅读隐藏在链接后面的教程才能理解问题。这是关于链接到 UIButton 的故事板转场 @Qooe 我重写了整个问题,所以它更有意义。我希望我确实正确理解了你想问的问题。如果不是这种情况,请随时在 revisions 中回滚到您的版本 @Matthias Bauch,谢谢。更清楚了。 【参考方案1】:不。您无法取消直接链接到 UIButton 等界面元素的 segue。
但是有一个解决方法。
-
删除链接到按钮的segue
从 viewController(带有按钮的那个)添加一个 segue 到应该被推送的 viewController。这必须是未连接到界面元素的 segue。为此,您可以从状态栏启动 segue。或者在左侧边栏中创建 segue。
选择这个 segue,打开属性检查器并更改 segue 的 Identifier(例如 PushRedViewController)
选择Xcodes assistant view,通过按钮可以看到viewController的.h文件。
将按钮连接到操作。为此,请选择按钮并按住 Control 键拖动到 .h 文件。在菜单中选择操作并命名您的操作(例如 redButtonPressed:)
打开 viewController 的实现
将步骤 5 中的操作更改为如下所示:
- (IBAction)redButtonPressed:(id)sender
[self performSegueWithIdentifier:@"PushRedViewController" sender:sender];
【讨论】:
现在可以用于 ios5:***.com/questions/8066525/… 我不太确定如何将它与 Unwind Segues 一起使用,这可能吗?【参考方案2】:您实际上可以通过在代码中添加以下方法来做到这一点
- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender
if([identifier isEqualToString:@"btnSegue"])
return YES;
else
return NO;
假设您的 segue 是 btnSegue。如果您需要根据某些条件执行 segue,您可以使用以下代码
if(check)
[self performSegueWithIdentifier:@"btnSegue" sender:self];
其中 check 是 BOOL,您可以根据自己的条件设置 true 或 false。
【讨论】:
@TahoeWolverine 谢谢我可能回答的有点晚了:)以上是关于如何取消连接到 UIButton 的 segue的主要内容,如果未能解决你的问题,请参考以下文章
在代码中将 UIButton 连接到 IBOutlet 和 IBAction
IBOutlet 用于约束并以编程方式将其连接到 UIButton