NotificationCenter.observer не прослушивает уведомления

#ios #swift #nsnotificationcenter #notificationcenter

#iOS #swift #nsnotificationcenter #центр уведомлений

Вопрос:

Я столкнулся с неприятной проблемой с NotificationCenter, и я не могу найти, что не так с моим кодом. Я не знаю, есть ли какие-либо другие настройки, но каким-то образом мой notificationcenter либо не запускается, либо наблюдатель не прослушивает уведомление.

У меня в моем viewcontroller1.swift

 @IBAction func onButtonPressed(_ sender: Any) {
        NotificationCenter.default.post(name: .namePassedNotification, object: self)
    }
 

и в моем viewcontroller2.swift

     override func viewDidLoad() {
        super.viewDidLoad()

        NotificationCenter.default.addObserver(self, selector: #selector(handleNotification), name: .namePassedNotification, object: nil)
    }

    @objc func handleNotification()
    {
        view.backgroundColor = .black
    }
 

Я перепробовал все, что мог придумать или найти здесь, в stackoverflow, но, похоже, ничего не работает

Комментарии:

1. Он никогда не будет вызван, потому что вы добавили addObserver во второй контроллер представления, которого нет в стеке контроллера представления, поэтому просто измените код контроллера представления. Добавьте addObserver в первый контроллер представления и post observer во второй контроллер представления.

2. Вы не добавляете наблюдателя уведомлений в viewDidLoad.

3. Вы пробовали использовать здесь протокол делегирования связи? Другой вопрос: когда вы устанавливаете observer на viewcontroller2, находится ли viewcontroller1 в стеке навигации (контроллер все еще находится в памяти)? Пожалуйста, опишите соединение между этими двумя контроллерами.

4. @RajaKishan извините, это была опечатка при публикации вопроса, но да. Использование только self, которое ссылается на viewcontroller2, также не дает никакого результата

5. @ElTomato удаление наблюдателя из viewDidLoad в viewWillAppear также дало мне тот же результат, что и раньше