Связывание UITableView с TableViewController - PullRequest
1 голос
/ 16 декабря 2011

Может ли кто-нибудь описать, как можно иметь TableViewController с его файлом xib, имеющим в своем корне a и uitableview в качестве подпредставления? Я считаю, что TVController почему-то предполагает, что UITableView заполнит всю область. Это почему? У меня есть действительно конкретная потребность в создании своего рода интерфейса с боковыми и нижними вкладками с UITableView в качестве основной области. Нажатие вкладок изменяет предикат для контроллера fetchedresults и т. Д. И т. Д. Причина, по которой я этого хочу, заключается в широте и глубине категорий данных в модели данных. Мне нужно значительно сгладить структуру меню ... в противном случае со структурой таблицы и контроллера navbar пользовательский опыт будет сродни погружению во все более глубокие глубины пещеры! Моя идея проверена и верна в других парадигмах ... в iOS это выглядит почти так, как будто это путь Apple или шоссе. Я в порядке с яблоком, конечно, не хватит. Но я действительно хотел бы создать это. Я попытался добавить новый tableviewcontroller в комплекте с xib, а затем удалить UITableView в IB и заменить UIView и UITableView в качестве подпредставления, подключив (я полагаю) делегат к владельцу файла. Я создал IV tableView, когда я хочу сослаться на него, и снова использовал IB, чтобы подключить его в IB

.

Попробуй запустить, и это скулит, что ... [UITableViewController loadView] загрузил перо «TabbedTableController», но не получил UITableView. ' Похоже, я не могу понять, в чем тут проблема. Кажется, я больше не могу подключить UITableView!

Любая помощь будет потрясающей. Я отправлю тебе рождественскую открытку в отчаянии: ^) Кроме того ... почему так должно быть, и насколько строга эта UITableView? Просвети меня, если сможешь. Документы, которые я прочитал, не хотят.

С уважением Кит

1 Ответ

2 голосов
/ 16 декабря 2011

UITableViewController предполагает, что корневое представление (то есть свойство view контроллера) будет UITableView, поэтому табличное представление заполняет экран. Когда вам нужно представление, которое объединяет UITableView с другими представлениями верхнего уровня, вам нужно будет проделать немного больше работы, но это не сложно:

Ваш контроллер представления не будет подклассом UITableView. Вместо этого сделайте это:

@interface MyViewController : UIViewController 
  <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic, weak) IBOutlet UITableView* tableView;

В Интерфейсном Разработчике введите UITableView и любые другие необходимые элементы управления. Табличное представление может быть любого размера и в любом месте в иерархии представления. Кроме того, в Интерфейсном Разработчике перетащите с помощью Ctrl из табличного представления в VC и установите выходы delegate и dataSource, а затем перетащите Ctrl из VC в табличное представление, чтобы установить выход tableView.

Ваша реализация контроллера представления должна быть типичной реализацией контроллера представления таблицы: cellForRowAtIndexPath и т. Д.

A UITableViewController - это почти все вышеперечисленные работы, объединенные для вас в единый блок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...