UIViewController.View.Window 在 ViewDidLoad 方法中为空
Posted
技术标签:
【中文标题】UIViewController.View.Window 在 ViewDidLoad 方法中为空【英文标题】:UIViewController.View.Window is null in ViewDidLoad method 【发布时间】:2012-04-23 09:47:43 【问题描述】:无论是哪种控制器类型(UIViewController
、UITableViewController
),以下行始终在 ViewDidLoad
方法中生成 null
:
this.View.Window
这种行为是正常的,还是我在做一些奇怪的事情?什么会导致UIViewController.View.Window
成为null
?
(我想这个问题不仅涉及 MonoTouch,还涉及“正常”的 Objective-C Cocoa)。
(MonoTouch 5.2.11,Xcode 4.2.1 4D502)
【问题讨论】:
【参考方案1】:根据UIView 的文档,window
属性是nil
,如果视图尚未添加到窗口中,则在调用viewDidLoad
时就是这种情况。
【讨论】:
视图添加到窗口后调用什么方法? @AlexRyan 你可以使用-viewDidAppear
。【参考方案2】:
而不是self.view.window
使用
[(YourAppDelegate *)[[UIApplication sharedApplication] delegate] window]
【讨论】:
使用UIScene
会有问题。【参考方案3】:
self.view.window
将在 viewDidAppear 中可用:
override func viewDidAppear(_ animated: Bool)
print(self.view.window)
let vc = self.storyboard?.instantiateViewController(identifier: "SecondViewController") as? SecondViewController
self.view.window?.rootViewController = vc
【讨论】:
以上是关于UIViewController.View.Window 在 ViewDidLoad 方法中为空的主要内容,如果未能解决你的问题,请参考以下文章