一个UIButton两个场景只有一个segue,需要条件代码

时间:2012-06-09 02:13:18

标签: objective-c ios xcode presentmodalviewcontroller uistoryboardsegue

我在Xcode项目的故事板文件中创建了几个场景,加载的第一个场景是用户登录屏幕。当用户登录UIButton时,“登录”会将用户带到欢迎屏幕。我在故事板中使用模态segue设置了它。我希望名为“admin”的用户成为欢迎管理界面。我很确定只有一个segue与一个对象关联,即故事板中的UIButton,所以我很难过如何完成登录以将管理员带到管理员欢迎屏幕,并将所有其他用户带到用户欢迎屏幕。我真的不想创建两个单独的登录按钮,所以这不是一个选项。

我遇到了一些类似问题的stackoverflow帖子,但所有的答案似乎都有点复杂。请记住,我是Xcode的新手,所以如果你在答案中粘贴代码,请指定代码应该放入哪个文件(这会帮助我很多)。我将发布一张到目前为止我的故事板的图片,以帮助演示我所谈论的视觉图表。

enter image description here

2 个答案:

答案 0 :(得分:6)

如果我正确理解了您的问题,以下是您需要采取的步骤:

  1. WelcomeViewController - 您拥有用户名/密码登录按钮,控制+从UIViewController拖动到WelcomeScreen,然后从Modal中选择UIViewController弹出菜单(通过从UIViewController拖动我的意思是,在故事板中选择Admin,底部有一个圆形图标,从那里到目标视图控制器)。将segue标识符命名为“UserSegue”

  2. 重复步骤1,而是控制+将其拖动到WelcomeViewController屏幕。将segue标识符命名为“AdminSegue”

  3. 您现在需要继承-(IBAction)login:(id)sender

  4. 实施- (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}}
  5. 在故事板中,将登录按钮连接到步骤4中的方法。

答案 1 :(得分:1)

这是对的 - 你只能从一个按钮(或其他控件)中有一个传出的segue。

但是,您可以从视图控制器中获得任意数量的传出segue。与附加到按钮(或其他控件)的那些不同,当点击控件时,不会自动调用视图控制器中的segues - 您必须在代码中执行此操作,但在代码中执行此操作可让您灵活地根据无论你需要什么条件。

要从视图控制器制作segue,请从IB视图中的视图(橙色圆圈)下方的视图控制器图标或场景轮廓中的条目进行控制拖动。创建segue后,给它一个唯一的标识符(例如“mySegue”)。

然后,创建一个连接到按钮的动作方法。在该方法的实现中(可能在包含按钮的视图控制器中),测试您需要的条件,并调用[self performSegueWithIdentifier:@"mySegue"]来执行segue。

如果有帮助,我的answer to a similar question会有更多解释。