在ViewDidLoad方法中,UIViewController.View.Window为null

che*_*ica 15 iphone cocoa-touch xamarin.ios ios

无论哪种控制器类型(UIViewController,UITableViewController),以下行总是nullViewDidLoad方法中产生:

this.View.Window

这种行为是正常的,还是我做了一些奇怪的事情?可能会导致什么UIViewController.View.Windownull

(我想这个问题不仅涉及MonoTouch,还涉及'普通'Objective-C Cocoa).

(MonoTouch 5.2.11,XCode 4.2.1 4D502)

sch*_*sch 28

根据UIView的文档,该window属性nil是否尚未将视图添加到窗口中,这viewDidLoad是调用时的情况.

  • @AlexRyan您可以使用`-viewDidAppear`. (5认同)
  • 视图添加到窗口后调用什么方法? (2认同)

din*_*rma 7

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
}
Run Code Online (Sandbox Code Playgroud)


cpr*_*ack 5

代替self.view.window使用

[(YourAppDelegate *)[[UIApplication sharedApplication] delegate] window]
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用“UIScene”,则会出现问题。 (3认同)