Ios 如何等待UIViewController完全初始化?
我有一个自定义segue类型(覆盖UIStoryboardSegue的init和perform方法),并在init方法中实例化目标视图控制器(VC)。在源VC的prepareForSegue方法中,我调用了目标VC的一个方法,该方法尝试重新加载目标VC的tableView。问题是,表视图并不总是初始化的,当调用表视图的重载数据时,有时会出现nil-de-reference错误。 问题是,我怎样才能等到VC完全初始化后才得到这个错误呢?Ios 如何等待UIViewController完全初始化?,ios,swift,uistoryboardsegue,viewdidload,Ios,Swift,Uistoryboardsegue,Viewdidload,我有一个自定义segue类型(覆盖UIStoryboardSegue的init和perform方法),并在init方法中实例化目标视图控制器(VC)。在源VC的prepareForSegue方法中,我调用了目标VC的一个方法,该方法尝试重新加载目标VC的tableView。问题是,表视图并不总是初始化的,当调用表视图的重载数据时,有时会出现nil-de-reference错误。 问题是,我怎样才能等到VC完全初始化后才得到这个错误呢? 我正在使用swift,如果您能用swift为答案编写任何示例
我正在使用swift,如果您能用swift为答案编写任何示例代码,我将不胜感激 我认为在这种情况下,最好的方法是在目标VC中添加一个flag属性,例如:
var forceReload: Bool
从源VC中的prepareforsgue
设置的。通过这种方式,您可以通过简单地检查该标志的值来选择从目标VC实际执行数据重新加载的位置(例如,在viewDidLoad
或viewwillbeen
),当然,如果该标志为真,则不记得重置它
如果还需要将数据从源传递到目标VC,请使用目标中声明的一个或多个属性,并从源中进行设置。只需调用viewController的视图即可强制加载
[viewController view]; //will force a loadView if necessary
///then do what you're trying to do..
您应该让目标视图控制器执行此操作。将该逻辑移动到目标视图控制器的viewDidLoad方法在swift中,您需要有一个类似于let x=viewController.viewer的命令,或
let\uux=viewController.view
小心,不要以其他方式使用它,只需调用getter即可