У меня есть контроллер табличного представления, а я drag-and-drop an additional UIView
on a storyboard to make a header, он становится подпунктом UITableView
.Работа с пользовательскими подпроектами UITableView
Я не делают это «официальный» заголовок раздела с viewForHeaderInSection:
и друзьями (я объясню, почему), это просто подтаблицы представления таблицы, которая появляется в верхней части таблицы, наряду с внутренним табличном обертки и обновления в иерархии представлений.
Иерархия выглядит следующим образом:
UITableView 0,0 320x455
UIRefreshControl 0,0 320x60
UITableViewWrapperView 0,0 320x455
cell 0,190 320x44
cell 0,146 320x44
cell 0,102 320x44
cell 0, 58 320x44
custom UIView 0,0 320x58
Теперь вид заголовка работает прекрасно ... пока я не хочу, чтобы изменить его размер. Идея заключается в том, что в заголовке есть текстовое поле, которое при фокусировке вызывает расширение дополнительных полей формы под ним, нажатие на ячейки таблицы вниз.
Проблема в том, что у меня мало контроля над укладкой ячеек. При изменении размера пользовательского вида (путем изменения его фрейма) он накладывает вид на оболочку таблицы.
Итак, почему бы мне просто не сделать это в виде заголовка раздела и изменить его размер через heightForHeaderInSection:
? Проблема заключается в том, что когда текстовое поле сфокусировано или набирается, мне нужно позвонить [self.tableView reloadData]
, чтобы обновить данные в таблице (тип поиска по типу), который также перезагружает заголовки и заставляет текстовое поле терять фокус ,
Так, чтобы подвести итог,
- Как я на самом деле сделать заголовок таблицы, который может динамически изменять размер и толкать вниз ячейки таблицы?
- Как сохранить фокус текстового вида внутри заголовка таблицы при перезагрузке указанной таблицы?
Как пробовать это так - дайте вашей таблице две секции, причем первая секция имеет только одну ячейку, эта ячейка будет вашим «заголовком». Когда вам нужно перезагрузить, используйте reloadSections: только для перезагрузки раздела 1, поэтому ваш «заголовок» не будет перезагружен. – rdelmar
@rdelmar Я развлекал эту идею. * Еще одна вещь, о которой я не упоминал, это то, что у меня есть класс базового контроллера, который используется другими подобными представлениями, мне пришлось бы реорганизовать его для представления таблицы из 2 разделов, поэтому я избегал этого. –
@rdelmar Я просто понял, что это не сработает, потому что мне нужно перезагрузить верхнюю секцию для изменения высоты заголовка, что, конечно же, приведет к разрушению UITextField focus ... –