NotificationCenter
这里以触发SideMenu为例:点击button打开SideMenu,再点击隐藏
- 在点击Button的action里,触发post
@IBAction func ClickList(_ sender: Any) {
//这里自定义notification名字
NotificationCenter.default.post(name: Notification.Name("ToggleSideMenu"), object: nil )
}
- 在控制SideMenu的VC添加observer(接收notification)
override func viewDidLoad() {
super.viewDidLoad()
//接收notification,触发SideMenu动作
//其中:Name("与post相同"),#selector(要触发的方法名)
NotificationCenter.default.addObserver(self,
selector: #selector(toggleSideMenu),
name: NSNotification.Name("ToggleSideMenu"),
object: nil)
}
- 附上控制SideMenu的方法,需要用@objc
//SideMenu出现和隐藏的方法
@objc func toggleSideMenu()
{
//如果当时的状态是“出现”,则改为“隐藏”
if sideMenuOpen
{
sideMenuOpen = false
sideMenuConstraint.constant = -240
}
//如果当时的状态是“隐藏”,则改为“出现”
else
{
sideMenuOpen = true
sideMenuConstraint.constant = 0
}
//动画
UIView.animate(withDuration: 0.3){
self.view.layoutIfNeeded()
}
}
网友评论