2009-07-02 3 views
31

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

enter image description here

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

  1. Создание рабочего подкласса UITableViewController заполненного данные
  2. настроить UTableView и это клетка, включая кран цель
  3. Добавьте вновь созданный UITableViewController в документ IB
  4. Перетащите UITableView из UITableViewController и в основной UIView
  5. Подключите UITableViewController к UITableView
  6. Примечание: добавление UITableViewController в код приводит к тому же профилю blem

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

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

ответ

32

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

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

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

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

  4. В файле реализации добавить все необходимые методы DataSource и делегировать необходимые для Tableview:

    (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 

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

+0

Работал как очарование, спасибо! –

Смежные вопросы