Изменение размера UITableView на RootController - PullRequest
3 голосов
/ 18 марта 2009

Можно ли изменить размер UITableView на RootController приложения, основанного на навигации? Когда RootViewController.xib открывается в IB, нет представления. Просто UITableView. Нажав на инспектора, а затем на маленькую желтую линейку, высота рамки становится серой. Я добавляю панель инструментов программно в RootViewController:

[toolbar setFrame:rectArea];

Это прекрасно работает, но нижняя ячейка в табличном виде частично скрыта, потому что табличное представление не знает о панели инструментов.

Ответы [ 5 ]

10 голосов
/ 11 марта 2010

Самый простой способ - настроить contentInset (который унаследован от UIScrollView). Изменение размера путем установки рамки может привести к сумасшедшим ошибкам рисования в ячейках.

Например, если вы пытаетесь изменить размер таблицы для клавиатуры, сделайте что-то вроде этого:

tableView.contentInset = UIEdgeInsetsMake(0.0, 0.0, 216.0, 0.0);
tableView.scrollIndicatorInsets = tableView.contentInset;

Надеюсь, это кому-нибудь поможет. Этот способ работал лучше всего для меня.

6 голосов
/ 18 марта 2009

Да, но вам нужно иметь ViewController (не UITableViewController) в качестве корневого контроллера для nav и обернуть фактический UITableView в представление UIViewControllers.

Вы по-прежнему можете настроить UIViewController на протоколы UITableViewDelgate и Datasource и использовать все те же методы, что и сейчас в вашем UITableViewController.

P.S. вы получите больше ответов, если будете использовать простой тег «iphone».

1 голос
/ 09 сентября 2009

Вы также можете просто установить вкладку Content и Scroller для таблицы

0 голосов
/ 10 ноября 2010

Да, настроить contentInset и scrollIndicatorInsets - это удобный способ изменить размер UITableView. После публикации ответа из Сэма Соффса мне удалось изменить размер UITableView в UITableViewController для нижней панели UIToolbar.

0 голосов
/ 08 июля 2010

Я столкнулся с подобной проблемой при попытке отобразить детальный контроллер самостоятельно, см .: http://vimeo.com/13054813

Проблема в том, что контроллер SplitView применяет свое собственное преобразование к субконтроллерам, вынимая их из цикла определения ориентации, который взрывает коз и кажется невероятно «хакерским» для встроенных классов. (Видео иллюстрирует, что происходит, когда вы делаете подробный вид корневым видом, затем добавляете его обратно в разделенный вид и делаете разделенный вид корневым в горизонтальном режиме; вы получаете двойное вращение подробного вида.)

К сожалению, я снова столкнулся с этими проблемами трансформации, пытаясь изменить размер подробного вложенного представления SplitViewController в ответ на появление / исчезновение клавиатуры. В портрете все отлично работает, в пейзаже fscked.

...