我们在哪里声明通知中心对象

时间:2018-08-30 10:39:57

标签: ios swift4

如果有人能正确地向我解释通知中心,通知中心的声明和用法,那就太好了

let nc = NotificationCenter.default
nc.post(name: Notification.Name("UserLoggedIn"), object:nil)

我们在哪里声明呢?

2 个答案:

答案 0 :(得分:1)

假设您有2个ViewController

  1. FeedListController
  2. CreateFeedController

现在的情况是,当您从CreateFeedController创建新的Fees Post时,新创建的feed将在FeedListController中刷新。为此,您可以使用NotificationCenter

您也可以根据自己的招聘情况使用它。

为此,您需要addObserver中的Viewcontroller中要在发生某些事情时执行一些操作,以便可以在FeedListController中添加如下所示的观察者。

NotificationCenter.default.addObserver(self, selector: #selector(refreshFeedList), name: NSNotification.Name(rawValue: "refreshFeedList"), object: nil)

FeedListController中的方法可从API获取新数据

@objc func refreshFeedList() {
    // Call Your APO to get New Data
}

创建新的Feed后,您需要在CreateFeedController中发布如下内容。

NotificationCenter.default.post(name: NSNotification.Name("refreshFeedList"), object: nil)

一旦发生火灾,它将调用FeedListController refreshFeedList并自动加载新数据。

答案 1 :(得分:0)

提到的代码将从您想要广播通知的地方发送。

将观察者添加到要根据该通知执行任何操作的班级

示例

收件人:

class ViewController: UIViewController {}

    override func viewDidLoad() {
        super.viewDidLoad()

        addObservers()
    }

    deinit {
        removeObservers()
    }

    func applicationWillEnterForegroundNotification(_ notification: Notification) {

    }


    fileprivate func addObservers() {
        NotificationCenter.default.addObserver(self, selector: #selector(ViewController.applicationWillEnterForegroundNotification(_:)), name: NSNotification.Name.UIApplicationWillEnterForeground, object: nil)
    }

    fileprivate func removeObservers() {
        NotificationCenter.default.removeObserver(self, name:  NSNotification.Name.UIApplicationWillEnterForeground, object: nil)
    }

}

广播公司:

NotificationCenter.default.post(name: NSNotification.Name.UIApplicationWillEnterForeground, object: nil)