IOS7,Segue和storyboard - 如何在没有按钮的情况下创建?

70

我目前有一个登录视图和一个应用视图,我已经成功在登录视图上实现了验证。验证成功后,我需要以编程方式转到应用视图。

我知道我可以在登录按钮上添加一个segue,然后像这样以编程方式调用它...

[self performSegueWithIdentifier:@"LoginSegue" sender:sender];

但是显然每当按钮被点击时都会触发这个动作(因为segue是附加在按钮上创建的)。我刚刚读到我应该创建一个按钮(并将其隐藏),然后对segue进行编程调用 - 这似乎有点“不对”。

如何创建一个没有附加到任何特定UI事件的segue?

1个回答

148

删除当前的segue。

将segue从源视图控制器连接到目标视图控制器(然后给它命名)。

现在,你的按钮按下方法应该像这样:

Objective-C:

- (IBAction)validateLogin:(id)sender {
    // validate login
    if (validLogin) {
        [self performSegueWithIdentifier:@"mySegue" sender:sender];
    }
}

Swift:

@IBAction func validateLogin(sender: UIButton) {
    // validate login
    if validLogin {
        self.performSegueWithIdentifier("mySegue", sender:sender)
    }
}
关键在于,原始视图控制器应该是您从中拖动以创建segue的那个视图控制器,而不是按钮或任何其他UI元素。
个人而言,我会按照这种方式连接我的所有segue,即使是那些仅在简单按钮推动时触发且没有任何验证或逻辑支持的segue。从按钮的方法中调用它很容易。
而且,我通常会在项目的某个地方声明所有的segue名称为常量字符串。

7
没问题。就我个人而言,我会用这种方式连接所有的转场,即使是那些不需要验证或逻辑支持、只需简单按钮触发的转场。从按钮方法中调用它很容易。 - nhgrif
我不知道你可以这样做,哈哈,谢谢!!!...我一直在创建隐藏/不可见的按钮来创建segue;然后在必要时命名和触发它们:S - Chris Allinson
只是一个提示,如果您有故事板引用(为了组织目的),您可以通过转到对象库并将“故事板引用”对象拖动到您的故事板上来连接segue。然后按照上面解释的方式连接segue... - kevinius
我还必须手动为segue指定一个标识符。在Xcode 12中,我需要在图形化storyboard中选择segue,然后单击属性面板中看起来像3个滑块的图标。这是您可以输入其标识符的位置。否则,您将收到没有segue的错误。 - Dave Hubbard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接