加载视图前的Swift观察者

时间:2017-10-20 08:57:43

标签: swift swrevealviewcontroller

我正在使用SWReveal创建一个滑动菜单。

当应用程序加载时,它会显示一个主页,其中包含应用程序中其他页面的按钮。按下按钮后,执行一个segue&菜单已更新,点亮新选择的页面,以便下次拉出菜单时,它指示用户当前所在的页面。

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

然而,当主页首次加载时它无法正常工作,因为尚未创建滑动菜单观察者。

我的问题:有没有办法在主页加载后初始化滑动菜单,以便创建观察者?或者有没有办法接近我没有看到的?

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)

}

1 个答案:

答案 0 :(得分:0)

这里最好的方法可能是使用Delegate。

您可以创建:

len(y_train)

最后在你的ViewController中:

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
        }
}