Создание и заполнение табличного представления в обычном контроллере представления
Могу поспорить, что этот вопрос задавался тысячу раз, но я не смог найти тот, который имеет прямое отношение к проблеме, с которой я сейчас сталкиваюсь, поэтому я очень признателен за помощь, ребята. Вот оно:
В моем приложении для 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;
}