【问题标题】:access multiple viewControllers from the main viewControllers programmatically in a storyboard在情节提要中以编程方式从主视图控制器访问多个视图控制器
【发布时间】:2015-07-05 00:53:09
【问题描述】:

我的问题的第一部分是基本理解。

我相信storyboard中的其他viewController在应用启动时都是“非实例化”的形式,在sequed时启动,请确认?

第二部分我如何以编程方式在情节提要中实例化同级 UIViewController 并可选地为其创建一个序列。我从 Objective-C 中找到了一些代码(粘贴在下面),但正在 SWIFT 中寻找解决方案。

MyViewController *myVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"MyViewController"];

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    您的第一个陈述在一定程度上是正确的。任何连接到通过关系 segue 或嵌入 segue 实例化的控制器也将被实例化(就像选项卡栏控制器的所有子级一样)。在您的代码 sn-p 中,您不需要使用 storyboardWithName: 如果您从在同一故事板中创建的控制器调用该方法;你可以使用 self.storyboard。

    var myVC = self.storyboard.instantiateViewControllerWithIdentifier("MyViewController")
    

    【讨论】:

    • 好的,知道了。我希望instantiateViewControllerWithIdentifier 将返回现有实例,如果它已经被关系实例化而不是创建一个新实例。请赐教。
    • 来自文档:此方法在您每次调用时都会创建指定视图控制器的新实例。
    • @Andre 基于我有限的知识,我觉得我在情节提要中定义的任何序列,到它的程序化转换实际上会转到情节提要中的 on,但不会转到新实例。我最终可能会得到同一个 ViewController 的两个实例。如果存在,有没有办法获取现有实例
    • 请告诉我更多关于你想要实现的目标......然后它会更容易帮助你:)
    • @user2727195 正如我上面所说的,除了展开之外,segues 总是会创建新的控制器。所以,如果你回到之前的控制器,你应该只使用展开转场。
    猜你喜欢
    • 1970-01-01
    • 2012-11-25
    • 2018-04-10
    • 1970-01-01
    • 2014-02-17
    • 2012-06-08
    • 2013-10-21
    • 2016-07-21
    • 1970-01-01
    相关资源
    最近更新 更多