Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何等待UIViewController完全初始化?_Ios_Swift_Uistoryboardsegue_Viewdidload - Fatal编程技术网

Ios 如何等待UIViewController完全初始化?

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为答案编写任何示例

我有一个自定义segue类型(覆盖UIStoryboardSegue的init和perform方法),并在init方法中实例化目标视图控制器(VC)。在源VC的prepareForSegue方法中,我调用了目标VC的一个方法,该方法尝试重新加载目标VC的tableView。问题是,表视图并不总是初始化的,当调用表视图的重载数据时,有时会出现nil-de-reference错误。 问题是,我怎样才能等到VC完全初始化后才得到这个错误呢?
我正在使用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即可