加载视图之前的快速观察者

问题描述:

我正在使用SWReveal创建滑动式菜单。加载视图之前的快速观察者

当应用程序加载时,它会显示一个主页,其中包含应用程序中其他页面的按钮。一旦按下该按钮,就执行一次继续执行&菜单被更新高亮显示新选择的页面,以便下一次菜单被拔出时指示用户当前正在打开的页面。

我正在使用观察者来更新菜单,如下所示。一旦滑动菜单已被加载,然后按下按钮,代码就可以正常工作。

但是,当主页首次加载时,由于滑动菜单观察者尚未创建,所以它不起作用。

我的问题:是否有一种方法来初始化刷卡菜单,一旦主页已被加载,以便观察者被创建?或者有没有办法解决这个问题,我没有看到?

swipeMenu.swift(接到通知):

override func viewDidLoad(){ 

    NotificationCenter.default.addObserver(self, selector: #selector(self.changeGiveaway(notification:)), name: Notification.Name("changeGiveaway"), object: nil) 

} 

func changeGiveaway(notification: Notification){ 

    print("Change giveway was called") 

    homeShadow.isHidden = true 
    yanaLiveVideoShadow.isHidden = true 
    yanaChatShadow.isHidden = true 
    yanaShopShadow.isHidden = true 
    yanaProfileShadow.isHidden = true 
    horoscopesShadow.isHidden = true 
    fortuneTellerShadow.isHidden = true 
    dailyGiveAwayShadow.isHidden = false 



} 

home.swift(邮政通知):

@IBAction func dailyGiveAway(_ sender: Any) { 

    NotificationCenter.default.post(name: Notification.Name("changeGiveaway"), object: nil) 
    performSegue(withIdentifier: "giveAway", sender: self) 

} 

这里最好的办法可能是使用代理的。

您可以创建:

protocol GiveAwayDelegate: class { 
    func changeGiveAway() 
} 

var delegate: GiveAwayDelegate? 

@IBAction func dailyGiveAway(_ sender: Any) { 
    self.delegate?.changeGiveAway() 
} 

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if let destination = segue.destination as? DestinationViewController { 
      destination.delegate = self 
     } 
} 

终于在您的视图控制器:

class ViewController: UIViewController, GiveAwayDelegate { 

    func changeGiveaway(notification: Notification){ 

     print("Change giveway was called") 

     ... 

    } 
}