У меня странная проблема в моем проекте.
Я создаю проект, который содержит некоторые элементы таблицы контрольного списка.
Для этого у меня был класс IPadRootViewController, который является родительским классом моего проекта. Теперь я добавляю дочерний контроллер представления Dashboarrootviewcontroller, который имеет панель навигации и два контейнера представления, которые связаны с контроллером панели управления и контроллером веб-просмотра.
WebViewController - это гибридная страница, созданная с помощью HTML и Angular JS. В первый раз, когда приложение загружено, я показываю контроллер веб-просмотра (с полным фреймом страницы), добавляемый в качестве дочернего контроллера просмотра iPadrootviewcontroller. после этой страницы я загружаю панель управления rootviewcontroller, которая имеет панель управления в левом контейнере и контроллер webview (тот же экземпляр) в правом контейнере. Здесь правая сторона webviewcontroller содержит подробную информацию об элементе в таблице dashboardviewcontroller.
В dashboardviewcontroller у меня есть табличное представление и 3 кнопки, которые используются для сортировки, фильтрации, группировки элементов табличного представления.
Сначала я отправляю запрос на получение данных с сервера. После получения ответа я разбираю и сохраняю его. а затем я загружаю таблицу, которая является компонентом с табличным представлением.
Я перезагружаю панель управления Rootview, если я возвращаюсь из Full Page WebViewController
Я отправляю запрос на получение данных вручную, когда загружаю панель управления Rootviewcontroller.
На этот раз контроллер просмотра панели мониторинга не отвечает, а таблица панели мониторинга пуста, хотя все таблицы методов источника данных печатают правильные значения в консоли (NSLog).
В то же время фоновая синхронизация с сервера также запускается всякий раз, когда в базе данных сервера происходят изменения. В это время я отправляю уведомление для получения данных с сервера. На этот раз контроллер просмотра панели мониторинга отвечает, и таблица также загружается.
My dashboardviewcontroller не отвечает ни на один метод (в симуляторе, а не при отладке), который изменит пользовательский интерфейс из Xib, если я отправлю запрос, отличный от способа сквозного уведомления.
Я заметил, что если я нажимаю кнопки (FilterBy, SortBy, GroupBy) и выбираю любой вариант, таблица перезагружается нормально.
С сожалением вынужден сообщить, что не могу показать свой код.
Еще одна вещь, которую я заметил при отладке, всякий раз, когда я отправляю уведомление о перезагрузке данных, которые я делаю с запросом на выборку данных с локального сервера, а затем после получения ответа я перезагружаю таблицу.
В обоих сценариях (с проблемами и без проблем) я использую один и тот же порядок методов, чтобы получить данные с сервера, а затем перезагрузить таблицу.
3 ответа
Наконец я нашел ответ на мою проблему.
Все это произошло из-за нескольких экземпляров панели управления viewController.
Я связал dashboardviewcontroller с представлением контейнера для dashboardRootviewcontroller, а затем в моем классе dashboardrootviewcontroller я получаю его из раскадровки, используя метод instantiateViewControllerWithIdentifier, поэтому он создает экземпляр, а раскадровка сама создает экземпляр.
Итак, эти два случая привели к моей проблеме.
Вызовите метод [self.tableView reloadData];
с именем представления таблицы в
-(void) viewWillAppear:(BOOL)animated
1 / Позаботьтесь о том, чтобы ваши делегаты numberOfSectionsInTableView:
и tableView:numberOfRowsInSection:
возвращали ожидаемые значения.
Добавьте NSLog
, чтобы распечатать значения, вычисленные этими методами.
2 / Позаботьтесь о том, чтобы ваш tableView был добавлен в вашу иерархию представлений и чтобы свойства bounds
, hidden
и alpha
вашего UITableView
были такими, как вы думаете. Для этого проще всего добавить странный цвет, например backbroundColor
к вашему UITableView
Сообщите нам, все ли в этом списке в порядке.
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.
reloadData
после извлечения данных из БД происходит в основном потоке. В вашем случае это может быть проблемой, но я не могу быть уверен, так как кода нет.