2013-11-01 4 views
10

Когда я работаю с TableViewController, я могу настроить весь контент в раскадровках. Поскольку я использую Статические ячейки вместо Динамические свойства для моего представления в таблице, я нахожу этот метод намного более удобным и простым в реализации. Я подключаю новый класс UITableView и просто удаляю все методы делегата. Работает как шарм, поскольку ВСЕ содержимое/кнопки настраиваются в раскадровки.Как настроить статический UITableView как подпункт UIView?

Я пытаюсь выполнить тот же результат, за исключением этого времени, я должен работать в пределах ViewController и добавить TableView в качестве подзаголовка. После того, как я подключить правильный класс, добавьте мое подключение выхода и установки следующих делегатов:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return 3; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"MainCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    return cell; 
} 

Это хорошо работает, если мой TableView установлен в динамических свойств: enter image description here

Но когда я изменить Таблица Просмотр содержимого до Статические ячейки и удаление метода делегата, мое приложение аварийно завершает работу. Итак, как добавить табличный вид с Статические ячейки (Что я могу манипулировать в раскадровки) до моего ViewController?

ответ

28

Вот что вы можете сделать. В своем раскадровке создайте родительский контроллер представлений, который также содержит все ваши представления, отличные от вида tableview, создайте UITableViewController. В контроллере родительского представления создайте представление контейнера, удалите контроллер вида, который он добавляет автоматически, и щелкните правой кнопкой мыши и перетащите из представления контейнера в ваш UITableViewController, чтобы создать встроенный сегмент. Ваш конечный результат должен выглядеть примерно так:

enter image description here

+1

Это сделало трюк, спасибо! – vzm

+0

У меня есть что-то вроде этой установки, но как мне общаться друг с другом? представление родителя и ребенка. – Steven

+0

@Steven В контроллере родительского представления вы можете добавить свойство контроллера детского представления и установить его в файле prepareForSegue. – JonahGabriel

1

Вам все еще нужно сделать пару вещей:
Добавить <UITableViewDataSource, UITableViewDelegate> в вашей декларации @interface.
Затем вы можете установить их также в Interface Builder.
Внесите cellForRowAtIndexPath и вызовите метод dequeueReusableCellWithIdentifier, чтобы вернуть ячейку.

Извините, я ошибся. По правде говоря, вы не можете использовать статические ячейки без UITableViewController. Сожалею.

Решение может заключаться в том, что вы создаете два контроллера и просто добавляете view контроллера табличного представления к вашему другому контроллеру.

+0

Если что-то не изменилось прошивкой 7, вы не должны реализовать методы источника данных при использовании статических клеток. – rdelmar

+1

@rdelmar, который точно прав. Я никогда не делал этого, и это отлично работает при работе с TableViewController, но он не работает для меня, когда я пытаюсь добавить представление таблицы в контроллер моего представления. – vzm

+0

@Mundi, хотя я уже добавил '' на мой @interface, я не думаю, что это проблема, см. Комментарий выше от rdelmar, что подтверждает мои подозрения. – vzm

1

Насколько я знаю, вы не можете сделать это напрямую. По крайней мере, в iOS 6 вам приходилось использовать UITableViewController при использовании статических ячеек. Одним из способов использования статического представления таблицы внутри UIViewController было бы добавить представление контейнера в IB и сделать встроенный контроллер контроллером табличного представления (удалить UIViewController, который вы получаете автоматически, перетащить в UITableViewController и связать его с встраиванием непосредственно перейти). Вы можете получить ссылку на этот контроллер табличного представления из UIViewController, выполнив prepareForSegue: sender :, и используя свойство destinationViewController (которое укажет на контроллер табличного представления).

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