【问题标题】:How to wait till the view in the container view is loaded?如何等到容器视图中的视图被加载?
【发布时间】:2016-07-07 01:34:59
【问题描述】:

我有这样的情况:

我有一个UIViewController VC1,它有一个容器视图。此容器视图包含另一个 UIViewController - VC2。我需要在 VC2 中设置一个属性,并在设置后将连接到 VC2 的一些标签上的文本更新为IBOutlets。我可以通过执行我在故事板中使用标识符“segueToVC2”创建的 segue 来访问 VC2。在设置了 VC1 – PROPERTY1 的属性后,我调用了 performSegueWithIdentifier 方法,即我在 PROPERTY1 的 didSet 方法中调用了 performSegueWithIdentifier。问题是容器视图持有的 VC2 的视图尚未加载,并且我连接到 VC2 的 IBOutlets 全部为零。这会导致我的应用崩溃。

我该如何解决这个问题?

提前致谢。

【问题讨论】:

  • 如果您在情节提要中设置容器视图,您可以简单地在prepareForSegue 中设置您的VC2,而无需手动调用performSegue

标签: ios iphone uiviewcontroller properties viewdidload


【解决方案1】:

我不确定 IBOutlets 是什么,还没有编写 Objective-C。 另外,我不确定您为什么需要使用 performSegueWithIdentifier,因为您告诉我们 VC2 包含在容器视图中。

VC1 中的容器视图使用嵌入式 segue 链接到 VC2。 您将在prepareForSegueviewDidLoadviewWillAppear 中获得VC2 的副本,您可以设置VC2 的属性。

这就是我在 Xamarin.iOS 上的做法。 祝你好运。

【讨论】:

    【解决方案2】:

    您必须在viewDidLoad 方法中设置VC2 中IBOutlets 的属性(文本、颜色等)。现在要从 VC1 设置这些值,您应该在 VC2 上创建一些属性来保存要从 VC1 传递到 VC2 的数据。然后在 VC1 中的“prepareForSegue”方法上设置你想要在 VC2 上的属性。然后在 VC2 viewDidLoad 中使用这些属性来更新您的 IBOutlets。

    【讨论】:

      【解决方案3】:

      好的,我已经设法以与VC1 处理相同的方式解决了这个问题: 我已经直接从AppDelegate 设置了VC2 所需的属性,一切正常。

      【讨论】:

        猜你喜欢
        • 2015-01-26
        • 2015-12-11
        • 2020-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-17
        • 2015-05-05
        相关资源
        最近更新 更多