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

Posted

技术标签:

【中文标题】一个UIButton两个场景只有一个segue,需要条件代码【英文标题】:One UIButton two scenes only one segue, conditional code needed 【发布时间】:2012-06-09 02:13:18 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

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

    您现在需要继承WelcomeViewController

    实现-(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];
        
    
    

    在情节提要中,将登录按钮与步骤 4 中的方法挂钩。

【讨论】:

非常感谢您的及时回复,您的正是我正在寻找的解决方案。【参考方案2】:

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

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

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

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

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

【讨论】:

以上是关于一个UIButton两个场景只有一个segue,需要条件代码的主要内容,如果未能解决你的问题,请参考以下文章

如何取消连接到 UIButton 的 segue

解析 iOS SDK:PFTableViewCell 内的 UIButton segue [关闭]

如何在 segue 中初始化 UIButton 的 titleLabel 字体?

从 UITableViewCell 中的 UIButton 触发 Segue

如何从子视图内的编程 UIButton 执行 segue?

UITableViewCell 中的 UIButton 使用 Storyboard 执行对另一个 UIViewController 的 Segue