2009-08-23 6 views
7

В моем приложении я хотел бы изменить размер высоты таблицы, когда она находится в режиме редактирования, и когда это не так (чтобы освободить место для редактирования элементов управления под табличным представлением)Как изменить динамическую высоту UITableView?

Как это сделать?

ответ

2

Вы можете реализовать делегат таблицы таблиц tableView:willBeginEditingRowAtIndexPath: и tableView:didEndEditingRowAtIndexPath:, чтобы выяснить, когда данная строка (и, следовательно, таблица) переходит в режим редактирования и выходит из него соответственно.

Оттуда вы можете просто настроить значение свойства frame.size.height вида таблицы (необязательно внутри блока анимации UIView). Также может быть полезно проверить свойство editing представления таблицы в целом внутри методов делегата, если вы получаете несколько вызовов для метода делегирования, прежде чем принимать вызовы их дополнительным методам.

Подробнее:

  • UITableView: editing недвижимость
  • UITableViewDelegate: tableView:willBeginEditingRowAtIndexPath: метод (didEndEditing также в этом документе)
5

Вы должны установить границы в Tableview:

CGRect tvbounds = [tableView bounds]; 
[tableView setBounds:CGRectMake(tvbounds.origin.x, 
           tvbounds.origin.y, 
           tvbounds.size.width, 
           tvbounds.size.height + 20)]; 
13

Я обнаружил, что манипулирование свойством «bounds» может привести к неожиданному поведению, когда у вас есть плавающая таблица внутри другого представления. Иногда таблица увеличивается при увеличении высоты, даже если начало координат равно 0,0.

Свойство "кадр" может быть более эффективным:

CGRect tvframe = [tableView frame]; 
[tableView setFrame:CGRectMake(tvframe.origin.x, 
           tvframe.origin.y, 
           tvframe.size.width, 
           tvframe.size.height + 20)]; 
Смежные вопросы