2019年6月30日 星期日

iOS swift 5: NotificationCenter 的用法

 可以用於不同的畫面傳遞參數
 也可以用於Thread中程式, 通知Main Thread 更新畫面的動作

 解決方案來源:
  Swift - 透過 NotificationCenter 監聽特定的事件同時傳值


 override func viewDidLoad()
 {  
  MyFunNtfInit()
 } 
 func MyFunNtfInit()
 {
  NotificationCenter.default.addObserver(forName: Notification.Name(rawValue: "MYFUNNTF"),
    object: nil, queue: nil, using: MyFunNtf)
 }
 
 func MyFunNtfPost()
 {
  NotificationCenter.default.post(name: Notification.Name(rawValue: "MYFUNNTF"),
            object: nil, userInfo: ["MSG1":"F","MSG1":"MyMsg2"])
 }
 
 @onjc fileprivate func MyFuncThread
 {
  while( 1)
  {
   if( bDoNtfPost == true)
   {
    MyFunNtfPost()
   }
  }
 }
 
 func MyFunNtf(noti:Notification) -> Void
 {
  guard let userInfo = noti.userInfo,
    let sMsg1 = userInfo["MSG1"] as? String,
    let sMsg2  = userInfo["MSG2"] as? String else {
       return
    }
   if( sMsg1 == "MyMsg1" ) 
   {
    ...
   }
 }    


沒有留言:

張貼留言