NSNotificationCenter无法正常工作

时间:2015-10-26 10:02:10

标签: swift2 ios9

我想通过使用NSNotificationCenter来调用方法。它们不会调用Swift 2.0。我是斯威夫特的新手。请帮忙 。任何帮助都会得到解决。

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
         let landingView = NewsViewController(nibName : "NewsViewController", bundle: nil)
         NSNotificationCenter.defaultCenter().postNotificationName("NotificationIdentifier", object: nil)
         self.navigationController?.pushViewController(landingView, animated: true)
    }

在我的新闻控制器中

    override func viewDidLoad() {
         super.viewDidLoad()
         NSNotificationCenter.defaultCenter().addObserver(self, selector: "methodOfReceivedNotification:", name:"NotificationIdentifier", object: nil)

    }

    func methodOfReceivedNotification(notification: NSNotification){

    }

    override func viewWillDisappear(animated: Bool) {
         NSNotificationCenter.defaultCenter().removeObserver(self, name: "NotificationIdentifier", object: nil)

    }

1 个答案:

答案 0 :(得分:1)

您调用此方法

NSNotificationCenter.defaultCenter().postNotificationName("NotificationIdentifier", object: nil)

在您的观察者创建之前。因此,请在此方法self.navigationController?.pushViewController(landingView, animated: true)完成后发布您的通知。你可以参考这篇文章:

Completion handler for UINavigationController "pushViewController:animated"?

希望有所帮助。