0

在 UITableViewCell 中有一个 UITextField

我正在使用表格视图制作一个填写表格(名字、中间名、姓氏),并希望在我的一些单元格中嵌入文本字段。我看到很多关于在 UITableViewCell 中添加 UITextField 的示例,例如上面的示例。但是,它们都具有文本字段框架的硬编码值,如下所示

UITextField *playerTextField = [[UITextField alloc] initWithFrame:CGRectMake(110, 10, 185, 30)];

我希望我的文本字段使用单元格的框架或边界。

为了让事情更有趣,我的表格视图有四个部分,只有第 1 部分有 3 行,将嵌入文本字段。

为了让事情变得更有趣,我使用一个弹出控制器来展示我的表单。

那么,如何在设置其框架或边界时不使用硬编码值将文本字段嵌入到表格视图单元格中?

谢谢!

4

3 回答 3

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];
于 2012-11-14T01:58:24.097 回答
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。如果单元格的大小发生变化,文本字段也会随之变化。

于 2012-11-14T02:39:24.457 回答
0

您可以使用情节提要编辑器通过创建自定义 nib 将其映射出来,然后在 cellForRowAtIndexPath 中引用该笔尖

假设您的目标是 iOS5+,这很容易做到。

  1. 使用以下内容在 viewDidLoad 中设置笔尖
[self.tableView registerNib:[UINib nibWithNibName:@"nibname" bundle:nil]  forCellReuseIdentifier:<#(NSString *)#>]
  1. 在 cellForRowAtIndexPath 中加载笔尖
CellClass *cell = [tableView dequeueReusableCellWithIdentifier:<#(NSString *)#>];

其中 CellClass 是您为单元格创建的类。

这种方法允许很大的灵活性来自定义单元格以及创建单元格特定的方法。(例如,如果您在 tableView 中使用多个单元格模板)。

于 2012-11-14T23:56:38.613 回答