2013-08-27 2 views
2

По умолчанию, когда я перетаскиваю TableViewController в IB, tableview занимает весь экран, и нет возможности добавить UIView, который остается на месте, даже когда пользователь прокручивает tableview (If i Say добавляет UIView с некоторыми кнопками, а затем, когда я просматриваю таблицу, которую прокручивает UIView.)Сделать таблицуView занимает только часть экрана

Моя программа использует подкласс UITableViewController для управления представлением таблицы, что является самым простым способом иметь верхний бар, который остается статичным даже при прокрутке пользователя?

ответ

4

Простой, вместо использования UITableViewController просто используйте UIViewController с UITableView, размещенным внутри него. (оставляя место для вас, чтобы добавить вторичный вид выше или ниже таблицы) Таким образом, вы можете позволить виду контроллера View просмотреть весь экран и вручную определить кадр в виде таблицы внутри него. Требуется немного переупорядочения, но он будет соответствовать вашим потребностям.

enter image description here

Единственные реальные различия, которые необходимо знать, это то, что вам нужно, чтобы сделать ваш контроллер представления соответствуют как в UITableViewDelegate и протоколов UITableViewDataSource, а также объявление о выходе за столом Посмотрите сами.

@property (weak,nonatomic) IBOutlet UITableView *tableView; 

Важно также иметь в виду, что есть несколько функций, которые доступны только на UITableViewController как clearsSelectionOnViewWillAppear, но вы всегда можете копируют их самостоятельно.

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    [self.tableView deselectRowAtIndexPath:self.tableView.indexPathsForSelectedRows animated:YES]; 
} 
+0

I'v создать ViewController с Tableview внутри и осталось пространство в верхней части для моего меню, я только построил его в IB (не установлено подмигнули классы или что-нибудь), но то, что происходит в том, что, когда я бегу app, tableview появляется «под пространством, которое я оставил открытым», поэтому, если у меня есть кнопка в открытом пространстве - кнопка будет отображаться поверх ячеек таблицы. –

+0

. Мой предыдущий комментарий - кажется, был проблемой с ограничениями в IB вызывая это. –

3

Подход, который я рекомендую (и я думаю, что это шаблон дизайна, который рекомендует Apple), заключается в использовании встроенного segue для вставки контроллера табличного представления в родительский контроллер, который содержит ваши дополнительные представления. Это помогает сохранить модульность и упрощает понимание общей структуры приложения.

основных шагов заключаются в следующем:

  1. Создать родительский контроллер вида в IB и добавить вид контейнера
  2. Создайте код вставки SEGUE по Ctrl-перетаскивание с точкой зрения контейнера к контроллеру вида вы хотите для внедрения.
  3. Дайте segue идентификатор типа «EmbedMyTable».
  4. В методе родительского контроллера prepareForSegue проверьте свой идентификатор вставки segue и выполните любую дополнительную проводку. Механизм просмотра и отношения просмотра устанавливаются автоматически, но вы можете настроить контроллер табличного представления и сохранить ссылку на него.