5

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

我遇到了一些带有类似问题的 stackoverflow 帖子,但所有答案似乎都有些复杂。请记住,我是 Xcode 的新手,所以如果您在答案中粘贴代码,请指定代码应该放入哪个文件(这对我有很大帮助)。我将发布我的故事板到目前为止的样子,以帮助展示我正在谈论的内容的可视化图表。

在此处输入图像描述

4

2 回答 2

6

如果我正确理解了您的问题,以下是您需要采取的步骤才能使其发挥作用:

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

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

  3. 你现在需要子类化WelcomeViewController

  4. 实施-(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];
        }
    }
    
  5. 在情节提要中,将登录按钮连接到步骤 4 中的方法。

于 2012-06-09T02:51:03.540 回答
1

没错——你只能从一个按钮(或其他控件)获得一个传出的 segue。

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

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

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

如果有帮助,我对类似问题的回答中有更多解释。

于 2012-06-09T02:43:18.577 回答