Создание и заполнение табличного представления в обычном контроллере представления - PullRequest
0 голосов
/ 19 июня 2011

Могу поспорить, что этот вопрос задавался тысячу раз, но я не смог найти тот, который имеет прямое отношение к проблеме, с которой я сталкиваюсь сейчас, поэтому я очень признателен за помощь, ребята. Здесь идет:

В моем приложении для iPhone есть контроллер представления, который при запуске запрашивает строку JSON с сервера. Когда приложение получает JSON, оно анализируется, и табличное представление заполняется соответствующими данными. Пока это происходит, я показываю UIActivityIndicatorView, чтобы указать, что что-то происходит за кулисами.

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

Как мне создать и заполнить табличное представление данными, которые я скачал с сервера, и как мне сделать это без обычного cellForRowAtIndexPath и подобных методов?

Спасибо!

Решение

Я только что понял, как решить мою проблему. Когда ответ сервера вернулся, я выделяю свое табличное представление, устанавливаю его источник данных и делегирую self, затем заполняю табличное представление возвращенными данными, реализуя те же методы, которые реализует UITableViewController. Помните, как указывает @Deepak, принять UITableViewDatasource и UITableViewDelegate в заголовочном файле.

1 Ответ

0 голосов
/ 19 июня 2011

Я не понимаю, почему вы не можете использовать подкласс UITableViewController и делать

// Create UIActivityIndicatorView instance
[self.view addSubview:activityIndicatorView];

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

Таким образом, если вы заинтересованы в продолжении текущего пути.Вам необходимо, чтобы ваш подкласс UIViewController принял протоколы UITableViewDatasource и UITableViewDelegate и реализовал соответствующие методы.Я не думаю, что вы можете использовать UITableView без этого.

Edit

Очень странно, что когда вы снимаете NIB, это ведет себя по-другому,Если вы измените число строк на четное 1, наложение будет отображаться правильно.Это похоже на ошибку.

Я предлагаю вам внедрить loadView, чтобы исправить это, когда вы разделяете self.view и self.tableView.

- (void)loadView {
    self.view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]] autorelease];
    self.tableView = [[[UITableView alloc] initWithFrame:self.view.bounds] autorelease];

    self.tableView.dataSource = self;
    self.tableView.delegate = self;
}
...