你能给我解释一下管理UIViewController生命周期的正确方式吗?
特别地,我想知道如何使用初始化,ViewDidLoad, ViewWillAppear, ViewDidAppear, ViewWillDisappear, ViewDidDisappear, ViewDidUnload和Dispose方法在UIViewController类的Mono Touch。
你能给我解释一下管理UIViewController生命周期的正确方式吗?
特别地,我想知道如何使用初始化,ViewDidLoad, ViewWillAppear, ViewDidAppear, ViewWillDisappear, ViewDidDisappear, ViewDidUnload和Dispose方法在UIViewController类的Mono Touch。
当前回答
iOS 6及以后版本。新的图表如下:
其他回答
在官方文档中解释状态转换:https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/index.html
这张图片显示了各种视图' will '和' did '回调方法之间的有效状态转换
有效的状态转换:
取自:https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Art/UIViewController类Reference_2x.png
这里有很多过时和不完整的信息。仅适用于iOS 6及更新版本:
(一)未经 viewDidLoad[一] 那些有点 viewWillLayoutSubviews是边界第一次被最终确定 viewDidLayoutSubviews 在viewDidAppear * viewWillLayoutSubviews [b] * viewDidLayoutSubviews [b]
脚注:
(a) -如果在didReceiveMemoryWarning期间手动空出视图,loadView和viewDidLoad将再次被调用。也就是说,默认情况下,loadView和viewDidLoad每个视图控制器实例只被调用一次。
(b)可称为额外0次或更多次。
海德尔的答案适用于ios 6之前的版本。然而,在iOS 6中,viewDidUnload和viewWillUnload从未被调用。文档声明:“视图在低内存条件下不再被清除,因此该方法永远不会被调用。”
更新:ViewDidUnload在iOS 6中已弃用,因此更新了相应的答案。
UIViewController的生命周期如图所示:
使用Xamarin Native/Mono Touch的优势在于,它使用了原生api,因此它遵循与Apple文档中相同的ViewController生命周期。
iOS 6及以后版本。新的图表如下: