2017-02-02 2 views
0

Я хочу создать чат с помощью уведомления Apple, и я хочу, когда я получу уведомление, передав данные в таблицу View, чтобы обновить его. Я пытаюсь сделать образец пример, чтобы проверить, как передать данные из формы приложения делегат ViewController и он не работает может кто-нибудь помочь, пожалуйста, Моего ViewController кодаПередача данных из AppDelegate в ViewController в реальном времени (iOS) Swift 2

class ViewController: UIViewController { 

    var fileDirectory: String = String() 
    let delegate = UIApplication.sharedApplication().delegate as! AppDelegate 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.refreshView(_:)), name: "refreshView", object: nil) 
    } 

    func refreshView(notification: NSNotification) { 
     fileDirectory = delegate.filePath 
     print("tester") 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 
} 

Я хочу, чтобы получить доступ к функции refreshView из AppDelegate

+0

Есть ли конкретная причина для использования центра уведомлений? Если это единственный контроллер, который должен знать, когда приходит уведомление, я бы сразу обновил контроллер представления. Я ответил на очень похожий вопрос давным-давно: http://stackoverflow.com/a/36443812/2237587 – Simon

+0

не работает человек Iam пытается напечатать «Away» и не работает тоже не идет в if {} Я попробовал в обоих направлениях, и оба без работы мне нужно сделать что-нибудь в виду класса контроллера? , если rootViewController = window? .rootViewController as? ViewController { print ("Away") rootViewController.TestNotificationPasse ("TesTef") } –

ответ

3

Вы писали ниже линии прямо в ViewController in viewDidLoad()

NotificationCenter.default.addObserver(self, selector: #selector(ViewController.refreshView), name: "AnyThingYouWant", object: nil) 
} 

Но Добавьте эту строку в AppDelegate, где вы хотите, чтобы вызвать метод ViewController.refreshView

NotificationCenter.default.post(name: "AnyThingYouWant", object: self) 
} 

, если вы хотите, чтобы вызвать метод refreshView когда получил уведомление затем написать выше линии в didReceiveLocal/RemoteNotification Метод

+0

Спасибо большое, что вы спасли мою жизнь <3 –