我需要创建并加载UIViewController
,然后再将其作为子视图插入另一个UIViewController
。
在iOS 9中我可以myController.loadViewIfNeeded()
。 iOS 8有什么好的解决方法?
似乎myController.view.hidden = myController.view.hidden
有效但似乎是一种危险的黑客攻击。
答案 0 :(得分:10)
有许多方法可以强制视图控制器加载其视图。事实上,最常见的方式(据我所知)是访问视图控制器的view
属性。
_ = viewController.view
我不会将此视为黑客攻击。事实上,Apple的文档声明,当视图属性等于nil
时,访问视图属性会导致加载请求的视图。这意味着所提出的解决方案是安全的,即使在将来的iOS版本中也应该按预期工作。来自Apple's documentation:
存储在此属性中的视图表示视图控制器的视图层次结构的根视图。此属性的默认值为nil。
如果访问此属性且其值当前为nil,则视图控制器会自动调用loadView方法并返回结果视图。