все. Я написал этот код для передачи данных между VC, но я не уверен, почему он не работает.Передача данных между контроллерами View с NSNotificationCenter
Вот код в ViewController1: -
import UIKit
import Foundation
let foodDict: [String:String] = [
"Orange": "Fruit",
"Carrot": "Vegetable",
"Pear": "Fruit",
"Spinach": "Vegetable"
]
class ViewController1: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().postNotificationName("SEND_STRING", object: nil, userInfo: foodDict)
}
}
В ViewController2: -
import UIKit
import Foundation
class ViewController2: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: "printStringDict:", name: "SEND_STRING", object: nil)
}
func printStringDict(notification: NSNotification) {
print("Got the notification...")
let foodDictFromVC1 = notification.userInfo as! [String:String]
print(foodDictFromVC1)
}
}
VC2 не получает словарь (так как ничего не печатает). Может кто-нибудь помочь? Заранее спасибо.
Есть ли сообщение «Получено уведомление ...» в консоли? Звучит для меня, что VC2 не загружается до VC1, поэтому наблюдатель еще не существует. –
Существует ли экземпляр 'ViewController2' в момент, когда вызывается функция' viewDidLoad' 'ViewController1'? Об этом уведомлении говорят только наблюдатели, которые существуют во время уведомления. – rmaddy
BTW - это не очень хороший подход. Но трудно быть уверенным, не зная отношений между двумя контроллерами. – rmaddy