Стратегии отладки, когда ячейки UITableView не загружаются?
Я пытаюсь встроить UITableView в основной UIView моего ViewController, который составляет 75% ширины экрана. В идеале этот UITableView также должен быть встроен в контроллер навигации. Кроме того, кажется, что я не могу использовать UIContainerViews с iOS 5, потому что я сталкиваюсь с ошибкой "Не удалось создать экземпляр класса с именем UIStoryboardEmbedSegueTemplate" (см. /questions/25088878/nsinvalidunarchiveoperationexception-s-containerview).
Для этого я создал UIView в основном UIView моего ViewController, который составляет 75% ширины экрана. В этом UIView я поместил UINavigationBar и UITableView. Я создаю экземпляр UITableViewController в ViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
функция. После создания экземпляра я подключаю UITableView моего ViewController к UITableView UITableViewController через self.tableViewController.tableView = self.tableView
,
Кажется, все работает нормально, за исключением того, что мой UITableView не показывает никаких ячеек, даже если я предварительно загружаю его данными.
Какие дополнительные данные я могу предоставить, чтобы помочь диагностировать проблему? Я, конечно, не получаю никакого сообщения об ошибке, и источник данных действительно получает данные, и я вызываю [self.tableView reloadData]
после обновления источника данных.
ОБНОВЛЕНИЕ 1
В конечном счете, это именно тот тип поведения, который мне нужен, за исключением того, что вместо нескольких веб-представлений мне бы хотелось иметь несколько табличных представлений, каждое из которых было бы встроено в собственный контроллер навигации. Я предполагаю, что Chrome для iOS просто делает снимок экрана (?) Веб-страницы, поскольку при прокрутке вкладок взаимодействие не включено, но как бы вы это сделали, если хотите сохранить взаимодействие?
ОБНОВЛЕНИЕ 2
Конкретная линия, кажется, CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]
где static NSString *CellIdentifier = @"New Cell"
(и соответствующий прототип UITableViewCell определен таким в IB). Тем не менее, код, похоже, не падает на этой строке; вместо этого создается точка останова (Thread 1: Breakpoint 1.1
) это я не обозначил. Кроме того, это происходит только при тестировании на моем устройстве iOS. Все отлично работает при тестировании через симулятор iOS.
2 ответа
Здравствуйте: Окончательный ответ на мою конкретную проблему, связанную с тем, как iOS 5 против iOS 6 обрабатывает автоматическое расположение, в частности, в отношении UITableViewCells ("Автоизображение подвидов"); ср., по каким причинам пользовательские UITableViewCells могут работать в iOS 6, но не в iOS 5?
Поскольку этот конкретный вопрос является расплывчатым, а "ответ" не относится к тому, что, по моему мнению, было проблемой, я должен проголосовать за его удаление?
Ваши методы источника данных должны быть реализованы в вашем tableViewController
(что, кажется, вы не сделали). Вы должны были бы установить datasource
свойство вашего tableViewController для self
и реализовать методы в вашем исходном контроллере представления (т.е. self
). Кроме того, вы должны были бы добавить <UITableViewDataSource, UITableViewDelegate>
протоколы в объявлении @interface.
Не проще ли получить стандартный маршрут и подкласс? UITableViewController
переопределить методы источника данных?