在我的HomeViewController viewDidLoad方法中,我有一个观察者来查找新的通知。当观察到它时,它会对SecondTableVC产生影响。我在第二个VC中有一个观察者在寻找相同的通知,但是第二个观察者没有看到通知并调用该方法。提前感谢谁能解释我在这里错过了什么?我移除了viewDidLoad和segue方法中的观察者,但它没有修复它。
var childVC: UIViewController!
override func viewDidLoad() {
super.viewDidLoad()
childVC = self.storyboard?.instantiateViewControllerWithIdentifier("WordListsTableViewController")
// check for new notification - if there is segue to the SecondTableVC
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(HomeViewController.showChildVC), name: "NotificationActionPressed", object: nil) // Segue works fine.
}
func showChildVC() {
self.view.addSubview(childVC.view)
}在SecondTableVC中
override func viewDidLoad() {
super.viewDidLoad()
// check for new notification - if there is
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(SecondTableVC.newNotif), name: "NotificationActionPressed", object: nil)
}
func newNotif() {
print("new notif") // THIS METHOD IS NOT GETTING CALLED
}发布于 2016-05-20 14:33:59
类似于菲利普的回答:如果绝对需要第二个视图控制器侦听NSNotification事件,那么第二个视图控制器可以从情节提要中实例化,并由第一个视图控制器保存在内存中,直到它需要显示为止。在这种情况下,第二个视图控制器应该在初始化时订阅通知事件。
发布于 2016-05-20 13:22:29
您的segue导致第二个视图控制器是创建的。如果segue由通知触发,那么当通知触发时,SecondTableVC的viewDidLoad没有发生。
第二个控制器没有收到通知,因为它当时不仅还没有注册,而且实际上并不存在。
https://stackoverflow.com/questions/37347581
复制相似问题