繁体   English   中英

如何取消连接到UIButton的segue

[英]How do I cancel a segue that is connected to an UIButton

我正在编写本教程 ,该教程展示了如何使用故事板创建应用程序。 我的viewController有两个UIButtons,我已经将一个segue连接到那些UIButtons。 这些segue推出了一个新的viewController。

现在我正在寻找一种方法来取消这个segue如果某个条件变为真。 当我使用旧的xib文件来创建我的界面时,我能够做到这样的事情:

-(IBAction)sendButton:(id)sender {
  if(TRUE) {
    // STOP !!  
  }
}

这不再起作用了。 如何取消推送新的viewController?

不。 您无法取消直接链接到UIButton等界面元素的segue。

但有一个解决方法。

  1. 删除链接到按钮的segue
  2. 从viewController(带按钮的那个)添加一个segue到应该被推送的viewController。 这必须是未连接到界面元素的segue。 为此,您可以从状态栏启动segue。 或者在左侧边栏中创建segue。
  3. 选择此segue,打开属性检查器并更改segue的标识符(例如PushRedViewController)
  4. 选择Xcodes助手视图,这样你就可以看到带有按钮的viewController的.h文件。
  5. 将按钮连接到动作。 要执行此操作,请选择按钮并按住Ctrl键并拖动到.h文件。 在菜单中选择操作并命名您的操作(例如redButtonPressed :)
  6. 打开viewController的实现
  7. 将步骤5中的操作更改为以下内容:

     - (IBAction)redButtonPressed:(id)sender { [self performSegueWithIdentifier:@"PushRedViewController" sender:sender]; } 

您可以通过在代码中添加以下方法来实现此目的

- (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];
}

如果检查是BOOL,您可以根据您的条件设置真或假。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM