Подтвердить что ты не робот

Можете ли вы добавить UITableViewController TableView в другой вид?

Я вставил UITableViewController и соответствующий UITableView в простой документ IB. Цель состоит в том, чтобы включить UITableView внутри родительского UIWindow (или UIView) с другим "материалом" (что-либо действительно), украшающим таблицу. Вот что это могло бы выглядеть в Interface Builder.

enter image description here

Я пробовал это много раз и всегда добираюсь до того же места.

  • Создайте рабочий подкласс UITableViewController, заполненный данными
  • Настроить UTableView и его ячейки, включая целевые объекты
  • Добавить вновь созданный UITableViewController в документ IB
  • Перетащите UITableView из UITableViewController и в главный UIView
  • Подключите UITableViewController к UITableView
  • Примечание: добавление UITableViewController в код приводит к той же проблеме

При запуске приложения в эмуляторе iPhone или на устройстве таблица отображается правильно, но сбой при первом попытке и взаимодействии с ним. Прокрутка, кран, все сбой приложения. Это, кажется, проблема делегата, например, UITableView не знает, как связаться с UITableViewController, но я не знаю, как исправить проблему.

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

4b9b3361

Ответ 1

Ты на правильном пути! Вот что вам нужно сделать:

  • Создайте стандартный подкласс UIViewController с сопроводительным представлением xib.

  • Добавить UITableView в XIB.

  • Проведите все. Контроллер представления будет делегатом и источником данных для вашей таблицы, поэтому вы должны реализовать оба протокола.

  • В вашем файле реализации добавьте все необходимые источники данных и методы делегирования, необходимые для просмотра таблицы:

    (UITableViewCell *)tableView:(UITableView *)tv
        cellForRowAtIndexPath:(NSIndexPath *)indexPath
    

Ваш заголовочный файл может выглядеть примерно так:

MyViewController.h

@interface MyViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
{
    IBOutlet UITableView *myTableView;
    //This outlet is only necessary if you need to send messages to the table view (such as reloadData)
}
@end

Это должно сделать это!