Похоже, есть другой объект для просмотра таблицы или около того.Не очень понятноЯ решил это с помощью следующего метода.
Вместо вызова self.eventTableView.reloadData()
в методе расширения я отправляю уведомление NotificationCenter.default.post(name: Constants.AppNotification.EventTableViewShouldReload, object: self)
.Наблюдатель добавляется в viewDidLoad()
как NotificationCenter.default.addObserver(forName: Constants.AppNotification.EventTableViewShouldReload, object: nil, queue: nil, using: eventTableViewShouldReload)
с помощью метода:
@objc func eventTableViewShouldReload(notif: Notification) {
print("reload data notif \(CalendarModel.filteredData.count)")
CalendarModel.isFilterActive = true
self.eventTableView.reloadData()
}
Я создал класс модели данных для хранения статических переменных, без которых переменные очищаются.
struct CalendarModel {
static var data:[[String:Any]] = []
static var filteredData:[[String:Any]] = []
static var imagesData:[Int:UIImage] = [:]
static var filteredImagesData:[Int:UIImage] = [:]
static var isFilterActive = false
}
Теперь, когда табличное представление перезагружается, оно работает правильно.Без статических переменных CalendarModel
я получаю следующий лог
reload data notif 1
numberOfRowsInSection 1
reload data notif 0 <-- called twice
numberOfRowsInSection 0 <-- second one, the filteredData.count is getting 0
cellForRowAt
configureCell