如何等待UIViewController完全初始化?

时间:2014-10-31 21:46:33

标签: ios swift uistoryboardsegue viewdidload

我有自定义segue类型(覆盖init并执行UIStoryboardSegue的方法),在init方法中我实例化目标视图控制器(VC)。在源VC的prepareForSegue方法中,我调用目标VC的方法,该方法尝试重新加载目标VC的tableView。问题是表视图并不总是初始化,当我调用tableview的reloaddata时,我有时会得到一个nil de-reference错误。 问题是我怎么能等到VC完全初始化并且没有得到这个错误? 我正在使用swift,如果你在swift中为答案编写任何示例代码,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

只需在viewController的视图上调用即可强制加载。

[viewController view]; //will force a loadView if necessary
///then do what you're trying to do..

答案 1 :(得分:0)

我认为在这种情况下最好的方法是在目标VC中添加一个标志属性,如:

var forceReload: Bool

您在源VC中设置prepareForSegue。这样,您可以通过简单地检查该标志的值来选择从目标VC实际执行数据重新加载的位置(例如,在viewDidLoadviewWillAppear中) - 当然,如果标志为真,不要记得重置它。

如果您还需要将数据从源传递到目标VC,请使用目标中声明的一个或多个属性,并从源设置。