首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSNotification addObserver in ViewControllers Swift

NSNotification addObserver in ViewControllers Swift
EN

Stack Overflow用户
提问于 2016-05-20 13:09:26
回答 2查看 1.6K关注 0票数 1

在我的HomeViewController viewDidLoad方法中,我有一个观察者来查找新的通知。当观察到它时,它会对SecondTableVC产生影响。我在第二个VC中有一个观察者在寻找相同的通知,但是第二个观察者没有看到通知并调用该方法。提前感谢谁能解释我在这里错过了什么?我移除了viewDidLoad和segue方法中的观察者,但它没有修复它。

代码语言:javascript
复制
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中

代码语言:javascript
复制
    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 
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-20 14:33:59

类似于菲利普的回答:如果绝对需要第二个视图控制器侦听NSNotification事件,那么第二个视图控制器可以从情节提要中实例化,并由第一个视图控制器保存在内存中,直到它需要显示为止。在这种情况下,第二个视图控制器应该在初始化时订阅通知事件。

票数 1
EN

Stack Overflow用户

发布于 2016-05-20 13:22:29

您的segue导致第二个视图控制器是创建的。如果segue由通知触发,那么当通知触发时,SecondTableVCviewDidLoad没有发生。

第二个控制器没有收到通知,因为它当时不仅还没有注册,而且实际上并不存在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37347581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档