Как настроить статический UITableView как подпункт UIView?

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

Я пытаюсь выполнить тот же результат, за исключением этого времени, мне нужно работать в 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?

Ответ 1

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

enter image description here

Ответ 2

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

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

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

Ответ 3

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