У меня странная проблема в моем проекте.

Я создаю проект, который содержит некоторые элементы таблицы контрольного списка.

Для этого у меня был класс 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) и выбираю любой вариант, таблица перезагружается нормально.

С сожалением вынужден сообщить, что не могу показать свой код.

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

В обоих сценариях (с проблемами и без проблем) я использую один и тот же порядок методов, чтобы получить данные с сервера, а затем перезагрузить таблицу.

0
Vishnu Vardhan Devineni 14 Мар 2014 в 16:47
Вы назначили свой источник данных tableView и делегировали свой ViewController?
 – 
Vishnu
14 Мар 2014 в 16:49
1
Покажите свой код, иначе вы получите слишком общие, общие, ... ответы типа "вы назначили свой источник данных и делегировали?" и т. д. Нет хрустального шара...
 – 
zrzka
14 Мар 2014 в 16:51
Убедитесь, что вызов reloadData после извлечения данных из БД происходит в основном потоке. В вашем случае это может быть проблемой, но я не могу быть уверен, так как кода нет.
 – 
Amar
14 Мар 2014 в 17:00
Я отлично назначил свой источник данных tableview и методы делегирования. Моя таблица несколько раз загружает данные и несколько раз не перезагружается. Как сказал Амар, может возникнуть проблема с потоками, и я буду переделывать этот сценарий. Спасибо Дэни, Роберту и Амару за ответы.
 – 
Vishnu Vardhan Devineni
14 Мар 2014 в 17:23

3 ответа

Лучший ответ

Наконец я нашел ответ на мою проблему.

Все это произошло из-за нескольких экземпляров панели управления viewController.

Я связал dashboardviewcontroller с представлением контейнера для dashboardRootviewcontroller, а затем в моем классе dashboardrootviewcontroller я получаю его из раскадровки, используя метод instantiateViewControllerWithIdentifier, поэтому он создает экземпляр, а раскадровка сама создает экземпляр.

Итак, эти два случая привели к моей проблеме.

0
Vishnu Vardhan Devineni 18 Мар 2014 в 17:30

Вызовите метод [self.tableView reloadData]; с именем представления таблицы в

-(void) viewWillAppear:(BOOL)animated
0
Raj 14 Мар 2014 в 18:01
Спасибо за ответ, но каждый метод источника данных работает отлично, и я получаю идеальные значения при отладке, но в симуляторе нет никакой разницы. А также мне нужно перезагружать таблицу всякий раз, когда я получаю ответ от сервера, поэтому ее невозможно перезагрузить в представлении.
 – 
Vishnu Vardhan Devineni
17 Мар 2014 в 11:03

1 / Позаботьтесь о том, чтобы ваши делегаты numberOfSectionsInTableView: и tableView:numberOfRowsInSection: возвращали ожидаемые значения.
Добавьте NSLog, чтобы распечатать значения, вычисленные этими методами.

2 / Позаботьтесь о том, чтобы ваш tableView был добавлен в вашу иерархию представлений и чтобы свойства bounds, hidden и alpha вашего UITableView были такими, как вы думаете. Для этого проще всего добавить странный цвет, например backbroundColor к вашему UITableView

Сообщите нам, все ли в этом списке в порядке.

0
gsempe 17 Мар 2014 в 14:33
Спасибо за ответ, я получаю идеальные данные, если пытаюсь распечатать данные в отладке или в nslog. Каждый метод источника данных выполняется с новыми данными, как я вижу в отладке. Но в симуляторе не отображается табличное представление. Если я отправляю уведомление для получения данных, оно загружается. КАК я уже сообщил, что я использую один и тот же сценарий для обоих случаев (с проблемой и без проблемы)
 – 
Vishnu Vardhan Devineni
17 Мар 2014 в 20:12
Также я нигде больше не скрываю и не уменьшаю альфа-значение таблицы.
 – 
Vishnu Vardhan Devineni
17 Мар 2014 в 20:16