加载视图之前的快速观察者
问题描述:
我正在使用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")
...
}
}