【发布时间】:2015-12-14 21:14:03
【问题描述】:
我执行故事板中定义的 segue 以打开一个新的视图控制器。我需要在不需要显示某些按钮的特殊状态下配置 segue 的目标视图控制器。
我知道我可以通过在源视图控制器的-prepareForSegue:sender: 中设置此控制器上的变量来做到这一点。这样做的问题是,它首先实例化了控制器,所以 -viewDidLoad: 会运行,然后我才能在上面设置任何东西。
我不能完全用代码创建控制器,因为它的用户界面在 Storyboard 中。 -instantiateViewControllerWithIdentifier: 显然也先调用-viewDidLoad。
我可能可以使用信号量并将初始化代码添加到目标控制器的-viewWillAppear 中,但这很丑陋,它必须是一种比每次视图出现时都进行检查更优雅的方法。 (我的设置只需进行一次。)
在-viewDidLoad 运行之前,有什么方法可以将变量传递给控制器吗?
编辑:看起来只有当我使用 -performSegueWithIdentifier: 从代码中触发 segue 时才会发生这种情况。
【问题讨论】:
-
为什么不将这些按钮设置为默认隐藏,然后在viewDidLoad中开启或不开启呢?然后,您可以控制显示的内容。
-
这不会改变任何事情。隐藏或显示它们需要在 viewDidLoad 中进行。
-
所以你的问题是你不能覆盖
viewDidLoad,而不是你要求在调用该方法之前以某种方式传递和执行配置。这对我来说有点不清楚。我的错。 -
我的问题是,我想使用 viewDidLoad 来设置我的视图(因为它只需要完成一次),我不能这样做,因为我没有值我的变量,我将使用它来设置它(它们将在 viewDidLoad 之后设置)。
标签: objective-c uistoryboardsegue