Удалить наблюдатель NSNotification из UITableViewCell

У меня есть UIVIewController, и в нем я разместил UITableView
UITableView Содержит ячейку, в которой ячейка содержит UICollectionView
Каждая ячейка имеет свой собственный collectionView.
Теперь я хочу обновить некоторые строки представления коллекции различных разделов на основе таблицы заголовок.
Мое табличное представление содержит раздел Заголовок и кнопку внутри

Например: когда я нажимаю на заголовок TableView, я хочу обновить некоторые строки коллекции collectionView своей ячейки, поэтому здесь я использую NSNotification для строк callToUpdate в collectionView (все материалы, связанные с collectionView, помещаются в файл cell.m UITableView)

Но проблема в том, что при прокрутке ячейки наблюдатель продолжает добавлять, и мой метод уведомления о публикации вызывается несколько раз.

Я также написал код для удаления наблюдателя, но это не сработало.


person Anita    schedule 26.04.2018    source источник
comment
не могли бы вы отредактировать свой вопрос, чтобы показать код как и где наблюдатель добавляется в ячейку табличного представления?   -  person Michael Dautermann    schedule 26.04.2018
comment
@ user816: Это касается редактирования. Следует избегать таких заявлений, как «Привет, спасибо». И поскольку OP упомянул NSNotification, Swift здесь не подходит.   -  person Nitish    schedule 26.04.2018
comment
Вместо NotificationCenter для этого можно использовать Delegate.   -  person Austin Michael    schedule 26.04.2018


Ответы (1)


NotificationCenter будет вести себя только так, например, если вы используете NotificationCenter.default.addObserver в viewWillAppear, вы должны удалить наблюдателя, используя NotificationCenter.default.removeObserver в viewWillDisAppear. Это описание использования Apple для NotificationCenter.

Поскольку cellForRowAtIndexPath будет вызываться несколько раз, observer также будет добавлено несколько раз. Лучше советуем использовать Delegate. при нажатии на заголовок вы должны вызвать метод делегата, чтобы выполнить желаемое действие.

person Austin Michael    schedule 26.04.2018