Создание и заполнение табличного представления в обычном контроллере представления

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

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

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

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

Спасибо!

Решение

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

1 ответ

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

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

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

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

редактировать

Очень странно, что когда вы вынимаете 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;
}
Другие вопросы по тегам