iOS9之前的loadViewIfNeeded

时间:2016-02-06 09:58:03

标签: ios swift uiviewcontroller

我需要创建并加载UIViewController,然后再将其作为子视图插入另一个UIViewController

在iOS 9中我可以myController.loadViewIfNeeded()。 iOS 8有什么好的解决方法?

似乎myController.view.hidden = myController.view.hidden有效但似乎是一种危险的黑客攻击。

1 个答案:

答案 0 :(得分:10)

有许多方法可以强制视图控制器加载其视图。事实上,最常见的方式(据我所知)是访问视图控制器的view属性。

_ = viewController.view

我不会将此视为黑客攻击。事实上,Apple的文档声明,当视图属性等于nil时,访问视图属性会导致加载请求的视图。这意味着所提出的解决方案是安全的,即使在将来的iOS版本中也应该按预期工作。来自Apple's documentation

  

存储在此属性中的视图表示视图控制器的视图层次结构的根视图。此属性的默认值为nil。

     

如果访问此属性且其值当前为nil,则视图控制器会自动调用loadView方法并返回结果视图。