Having a UITextField in a UITableViewCell
我正在使用表格视图制作填写表格(名字,中间名,姓氏),并希望在我的某些单元格中嵌入文本字段。我看到很多关于在UITableViewCell中添加UITextField的例子,如上所述。但是,它们都具有文本字段框架的硬编码值,如此
UITextField *playerTextField = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 185, 30)];
我希望我的文本字段使用单元格的框架或边界。
为了使事情变得更有趣,我的表格视图有四个部分,只有第1部分(有3行)将嵌入文本字段。
为了让事情变得更有趣,我使用弹出控制器来呈现我的表格。
那么在设置框架或边界时,如何在不使用硬编码值的情况下嵌入我的文本字段以适合我的表视图单元格呢?
谢谢!
答案 0 :(得分:5)
自动调整面具是你的朋友。
cell = [tableView dequeueReusableCellWithIdentifier:@"identifier"];
CGFloat optionalRightMargin = 10.0;
CGFloat optionalBottomMargin = 10.0;
UITextField *playerTextField = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, cell.contentView.frame.size.width - 110 - optionalRightMargin, cell.contentView.frame.size.height - 10 - optionalBottomMargin)];
playerTextField.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[cell.contentView addSubview:playerTextField];
答案 1 :(得分:2)
如果您想确保UITextField
填充单元格的contentView
,那么您可以:
cell = [tableView dequeue....];
if (!cell) {
cell = ... // create cell
UITextField *textField = [[UITextField alloc] initWithFrame:cell.contentView.bounds];
textField.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[cell.contentView addSubview:textField];
}
显然,这需要额外的单元格设置,并且应该将某些内容设置为文本字段的委托。但这涵盖了获取文本字段以填充单元格contentView
的基础知识。如果单元格的大小发生变化,文本字段将随之改变。
答案 2 :(得分:0)
您可以使用storyboard编辑器通过创建自定义笔尖将其映射出来,然后在cellForRowAtIndexPath中引用
假设你的目标是iOS5 +,那很容易做到。
[self.tableView registerNib:[UINib nibWithNibName:@"nibname" bundle:nil] forCellReuseIdentifier:<#(NSString *)#>]
CellClass *cell = [tableView dequeueReusableCellWithIdentifier:<#(NSString *)#>];
其中CellClass是您为单元格创建的类。
这种方法可以灵活地定制单元格以及创建特定于单元格的方法。 (例如,如果你在tableView中使用多个单元格模板)。