Iphone: TabView + TableView - PullRequest
       16

Iphone: TabView + TableView

7 голосов
/ 15 февраля 2009

Я думаю, что упускаю что-то простое, но не могу понять, что именно.

Я пытаюсь настроить приложение с UITabViewController, и на одной из вкладок будут UITableView и UISearchBar (но без контроллера навигации). Я настроил UITabViewController со всеми вкладками в конструкторе интерфейсов, и представления находятся в их собственных файлах xib. XIB-файл для вкладки с UITableView настраивается и подключается следующим образом.

Материал в браузере: Владелец файла (класс - это мой пользовательский класс, который является дочерним элементом UITableViewController) -> View

View (class UIView, reference view -> File's owner) contains:
      UITableView (if i try and set references to the data source / delegate, the app breaks)
      UISearchBar (unconfigured at the moment)

Эта настройка отображает все элементы и не блокируется, но я не могу назначить источник данных без его сбоя, когда я пытаюсь загрузить вкладку с помощью UITableView. Что я должен сделать, чтобы получить данные в эту таблицу, либо в IB, либо в коде? Мои идеи таковы:

  1. Реализация пользовательского класса UITableView, подключение к табличному представлению в IB или к настраиваемому контроллеру tableview в Xcode.
  2. Стучите головой или ноутбуком о стену, пока она не заработает.

Обновление: Вот ошибка, которую симулятор выдвигает на консоль, когда я подключаю источник данных Tableview и делегирую File Owner (класс которого является моим настраиваемым контроллером tableview).

2/14/09 6:59:12 PM TabBarWillbeRight [33172] * Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '* - [UIViewController tableView: numberOfRowsInSection:]: нераспознанный селектор отправлено экземпляру 0x523760

Ответы [ 4 ]

24 голосов
/ 22 января 2010

У меня была похожая проблема с тем же сообщением об ошибке. Простым решением было щелкнуть View в TabBarController (серый прямоугольник с надписью «view загружен из ..») в IB и изменить класс элемента на имя класса моего TableViewController.

2 голосов
/ 15 мая 2011

У меня была такая же проблема. 1. Убедитесь, что ваш View реализует методы источника данных 2. В IB установите Идентификатор класса для вашего представления в классе, который реализует методы источника данных. 3. Щелкните правой кнопкой мыши по представлению в IB и убедитесь, что источник данных подключен к Владельцу файлов , а не Представлению Hooking up TableView in IB

1 голос
/ 15 февраля 2009

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

В частности, класс, который вы назначаете в качестве источника данных, должен реализовывать UITableViewDataSource

0 голосов
/ 15 февраля 2009

Вы уверены, что ваш класс реализует классы UITableViewDelegate и UITableViewDataSource? Также проверьте объявление вашего viewcontroller. Ваш .h файл должен быть примерно таким

@interface MyClass:UIViewController <UITableViewDelegate,UITableViewDataSource>

Все остальное, кажется, на месте. Если объявление класса не указывает, что оно реализует UITableViewDelegate и DataSource, вы получите исключение, как только вы установите источник данных.

...