2016-10-15 142 views

回答

3

我相信你需要viewWillAppear方法:

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    //your code here 
} 

这就是所谓的权利之前视图将被显示每次。所以它也会在第一次显示视图时被调用。 如果你想避免第一次运行你的代码viewWillAppear被调用,你将不得不添加一个标志属性,并检查它是否已经被设置。

1

如果你想捕捉每当有问题的景象映入眼帘,有两种情况下,你可能会担心:

  1. 如果过渡到这个场景(或者解聘/弹出回这个场景)从应用程序内。在这种情况下,使用viewWillAppear

    override func viewDidAppear(_ animated: Bool) { 
        super.viewDidAppear(animated) 
    
        update()  // your routine for updating what is displayed to the user 
    } 
    
  2. 如果应用程序正在运行,按“家”按钮(或者转到另一个应用程序),然后后来返回到您的应用程序(之前被终止) ,viewDidAppear而不是叫。检测到的场景,你可以观察.UIApplicationDidBecomeActive

    private var observer: NSObjectProtocol? 
    
    override func viewDidLoad() { 
        super.viewDidLoad() 
    
        observer = NotificationCenter.default.addObserver(forName: .UIApplicationDidBecomeActive, object: nil, queue: nil) { [weak self] notification in 
         self?.update() 
        } 
    } 
    
    deinit { 
        if let observer = observer { 
         NotificationCenter.default.removeObserver(observer) 
        } 
    }