我在Xcode项目的故事板文件中创建了几个场景,加载的第一个场景是用户登录屏幕。当用户登录UIButton时,“登录”会将用户带到欢迎屏幕。我在故事板中使用模态segue设置了它。我希望名为“admin”的用户成为欢迎管理界面。我很确定只有一个segue与一个对象关联,即故事板中的UIButton,所以我很难过如何完成登录以将管理员带到管理员欢迎屏幕,并将所有其他用户带到用户欢迎屏幕。我真的不想创建两个单独的登录按钮,所以这不是一个选项。
我遇到了一些类似问题的stackoverflow帖子,但所有的答案似乎都有点复杂。请记住,我是Xcode的新手,所以如果你在答案中粘贴代码,请指定代码应该放入哪个文件(这会帮助我很多)。我将发布一张到目前为止我的故事板的图片,以帮助演示我所谈论的视觉图表。
答案 0 :(得分:6)
如果我正确理解了您的问题,以下是您需要采取的步骤:
从WelcomeViewController
- 您拥有用户名/密码登录按钮,控制+从UIViewController
拖动到WelcomeScreen
,然后从Modal
中选择UIViewController
弹出菜单(通过从UIViewController拖动我的意思是,在故事板中选择Admin
,底部有一个圆形图标,从那里到目标视图控制器)。将segue标识符命名为“UserSegue”
重复步骤1,而是控制+将其拖动到WelcomeViewController
屏幕。将segue标识符命名为“AdminSegue”
您现在需要继承-(IBAction)login:(id)sender
,
实施- (IBAction)login:(id)sender {
// assuming you have hooked up the user name text field
if ([self.usernameTextField.text isEqualToString:@"admin"]) {
[self performSegueWithIdentifier:@"AdminSegue" sender:sender];
}
else {
[self performSegueWithIdentifier:@"UserSegue" sender:sender];
}
}
{{1}}
在故事板中,将登录按钮连接到步骤4中的方法。
答案 1 :(得分:1)
这是对的 - 你只能从一个按钮(或其他控件)中有一个传出的segue。
但是,您可以从视图控制器中获得任意数量的传出segue。与附加到按钮(或其他控件)的那些不同,当点击控件时,不会自动调用视图控制器中的segues - 您必须在代码中执行此操作,但在代码中执行此操作可让您灵活地根据无论你需要什么条件。
要从视图控制器制作segue,请从IB视图中的视图(橙色圆圈)下方的视图控制器图标或场景轮廓中的条目进行控制拖动。创建segue后,给它一个唯一的标识符(例如“mySegue”)。
然后,创建一个连接到按钮的动作方法。在该方法的实现中(可能在包含按钮的视图控制器中),测试您需要的条件,并调用[self performSegueWithIdentifier:@"mySegue"]
来执行segue。
如果有帮助,我的answer to a similar question会有更多解释。