【问题标题】:How to load a UIViewController conditionally using storyboard and xcode 4.2如何使用情节提要和 xcode 4.2 有条件地加载 UIViewController
【发布时间】:2012-03-24 00:40:01
【问题描述】:

我有一个屏幕,用户可以在其中选择一组餐点——一旦选择了餐点,应用程序就会从数据库中获取结果并显示它们的列表。现在,我想实现一个条件来决定是否应该加载下一个屏幕 - 即。如果没有互联网连接,则显示警报并且不显示下一个屏幕等。

我已经实现了一个系统来检查是否有互联网连接,但我不确定如何以及在哪里决定应该加载下一个屏幕。有什么想法吗?

谢谢,

【问题讨论】:

    标签: iphone xcode cocoa-touch ios5


    【解决方案1】:

    一旦您在代码中知道是否要显示下一个屏幕,您能否只添加一个 if 语句来加载下一个屏幕或显示没有连接的警告?

    if (hasConnection) {
      // Show next screen
    } else {
      // Show warning
    }
    

    【讨论】:

    • 是的,这就是我正在做的,但我不确定在 xcode 4.2 中的何处放置该代码 - 使用情节提要。
    【解决方案2】:

    当用户选择一些食物时,你应该有一个动作被触发,不是吗?在此操作中,您将调用 [UINavigationController pushViewController:nextViewController animated:YES] 或类似的名称。将此函数调用放入您偏好的条件中,否则显示一个弹出窗口。

    【讨论】:

    【解决方案3】:

    我使用以下答案解决了这个问题: Prevent segue in prepareForSegue method? 通过将 segue 链接到我的主视图控制器,然后将 IBAction 附加到最初是 segue 启动器的按钮并执行该方法中的逻辑。如果一切都解决了,我会打电话给[self performSegueWithIdentifier:@"results" sender:self];

    【讨论】:

      【解决方案4】:

      1.5 其他选项: 如果您愿意拆分故事和笔尖,只需在需要/需要时加载笔尖。 如果您想只关注故事,只需在需要时加载另一个故事。与加载笔尖相同:

      UIStoryboard *otherStoryboard = [UIStoryboard storyboardWithName:@"OtherStory" bundle:nil];
      UIViewController *otherController = [otherStoryboard instantiateInitialViewController];
      [self.navigationController pushViewController: otherController animated:YES];
      

      【讨论】:

        猜你喜欢
        • 2014-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-07
        • 1970-01-01
        • 2011-12-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多