我目前有一个登录View和一个Application视图,我已经在登录视图上成功实现了验证,我需要以编程方式转移到成功验证的应用程序视图。
我知道我可以在登录按钮中添加 segue ,然后以编程方式调用它...
[self performSegueWithIdentifier:@"LoginSegue" sender:sender];
但是,无论何时单击按钮,都会触发此操作(因为创建了segue附加到按钮)。我刚刚读到我应该创建一个按钮(并隐藏它),然后对segue进行编程调用 - 这看起来有点“错误”。
如何创建未附加到任何特定UI事件的segue?
答案 0 :(得分:135)
删除当前的segue。
将来自原点视图控制器的segue附加到目标位置(然后将其命名)。
现在,按下按钮的方法应如下所示:
- (IBAction)validateLogin:(id)sender {
// validate login
if (validLogin) {
[self performSegueWithIdentifier:@"mySegue" sender:sender];
}
}
@IBAction func validateLogin(sender: UIButton) {
// validate login
if validLogin {
self.performSegueWithIdentifier("mySegue", sender:sender)
}
}
这里的关键是原始视图控制器应该是你要创建segue的那个,而不是按钮或任何其他UI元素。
就个人而言,我以这种方式挂钩我的所有segues,甚至是那些应该触发简单按钮推送而没有任何验证或逻辑的。通过按钮的方法调用它很容易。
而且,我通常在项目的某个地方将所有的segue名称声明为常量字符串。