一个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,需要条件代码的主要内容,如果未能解决你的问题,请参考以下文章
解析 iOS SDK:PFTableViewCell 内的 UIButton segue [关闭]
如何在 segue 中初始化 UIButton 的 titleLabel 字体?
从 UITableViewCell 中的 UIButton 触发 Segue
UITableViewCell 中的 UIButton 使用 Storyboard 执行对另一个 UIViewController 的 Segue