Изменение размера UITableView на RootController

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

[toolbar setFrame:rectArea];

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


person 4thSpace    schedule 18.03.2009    source источник


Ответы (5)


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

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

P.S. вы получите больше ответов, если воспользуетесь обычным тегом «iphone».

person Kendall Helmstetter Gelner    schedule 18.03.2009
comment
Я подумал, что, наверное, так и должно быть. Спасибо за подсказку по тегу. - person 4thSpace; 18.03.2009

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

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

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

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

person Sam Soffes    schedule 11.03.2010

Вы также можете просто установить вставку Content и Scroller в tableview

person Community    schedule 08.09.2009

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

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

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

person amcgregor    schedule 08.07.2010

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

person Robin    schedule 10.11.2010