如何取消连接到UIButton的segue

时间:2012-03-23 09:55:08

标签: objective-c ios uibutton storyboard segue

我正在研究这个tutorial,它展示了如何使用故事板创建应用。我的viewController有两个UIButtons,我已经将一个segue连接到那些UIButtons。这些segue推出了一个新的viewController。

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

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

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

2 个答案:

答案 0 :(得分:27)

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

但是有一种解决方法。

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

答案 1 :(得分:10)

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

- (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender   {

if([identifier isEqualToString:@"btnSegue"])
{

   return YES;
}
else{
    return NO;
}

}

让我们假设您的segue是btnSegue.And如果您需要根据某些条件执行segue,您可以拥有以下代码

if(check)
{
 [self performSegueWithIdentifier:@"btnSegue" sender:self];
}

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