Поместите UITextField в AccessoryView UITableViewCell.

Я экспериментирую с размещением UITextField внутри UITableViewCell.

Теперь у меня есть два рабочих метода.

Используя метод addSubview:

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"textFieldCell"];

UITextField *textFieldView = [[UITextField alloc] initWithFrame:CGRectMake(150, 7, 150, 30)];
[textFieldView setPlaceholder:@"Placeholder"];

[cell addSubview:textFieldView];

Используя метод setAccessoryView:

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"textFieldCell"];

UITextField *textFieldView = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 150, 30)];
[textFieldView setPlaceholder:@"Placeholder"];

[cell setAccessoryView:textFieldView];

На мой взгляд, результат setAccessoryView выглядит лучше, так как выравнивание выполняется автоматически.

Но мой вопрос: можно ли поставить UITextField внутри AccessoryView? Или есть веская причина, почему я не должен делать это таким образом?


person Werner    schedule 03.12.2012    source источник
comment
Я попробовал способ accessoryView, но не смог расширить textField при загрузке tableView в альбомной ориентации.   -  person ma11hew28    schedule 04.04.2014


Ответы (2)


Apple не накладывает на него никаких ограничений, но основное намерение — добавить свойство accessoryView в класс UITableViewCell, которое будет использоваться, как правило, в качестве элемента управления, с правой стороны ячейки (нормальное состояние).

Следующее предложение взято из документа Apple:

Если значение этого свойства не равно нулю, класс UITableViewCell использует данное представление для вспомогательного представления в обычном (по умолчанию) enter code herestate табличного представления; он игнорирует значение свойства accessoryType. Дополнительное представление может быть элементом управления или меткой, предоставленным платформой, или настраиваемым представлением. Дополнительное представление отображается в правой части ячейки.

В соответствии с этим утверждением вы можете предоставить UITextField (управление, предоставляемое платформой) как accessoryView.

person Mayur Birari    schedule 03.12.2012
comment
Итак, я понимаю следующее: это не плохо, но и не красиво. - person Werner; 03.12.2012
comment
Это может быть красиво в соответствии с требованиями вашего клиента, и у Apple нет ограничений, так что продолжайте от меня. - person Mayur Birari; 03.12.2012

Я не думаю, что это ограничено. Но у accessView есть своя роль в дизайне: показать, что в ячейке есть интерактивные параметры.
Если вы хотите сделать это правильно, вы должны добавить UIViews в cell.contentView.

person pbibergal    schedule 03.12.2012
comment
Звучит разумно, но разве Apple не поместила элементы управления UISwitch на экран настроек с помощью accessoryView? - person Werner; 03.12.2012
comment
Я не уверен в этом.. Не видел исходный код. Но, может быть, ты прав. Как я уже сказал, в HIG нет ограничений. Но если я хочу, чтобы моя ячейка была гибкой и легко модифицируемой, я бы не стал полагаться на accessorView. - person pbibergal; 03.12.2012
comment
Я не уверен в этой ошибке, ну, они повсюду в приложении «Настройки»: cl.ly/image/3A2z0l2x0n1H - person Ian Dundas; 21.07.2014