6

我在 tableView 单元格中使用 UITextView 来编辑文本。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITextField *textName = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 270, 24)];

[cell addSubview:textName];
[textName release];

}

这行得通,但是在 iPad 上运行时它不正确。

我尝试使用 cell.contentView.frame.size.width 确定单元格的宽度

但这对于 iPhone 和 iPad 总是返回 320.0

同样在 iPad 上,当处于横向模式时,单元格的宽度不应该更大吗?

4

2 回答 2

2

理想情况下,您应该创建一个自定义UITableViewCell并在layoutSubviews.

如果要在 中添加控件tableView:cellForRowAtIndexPath:,则可以从 tableView 本身获取宽度:

UITextField *textName = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width-50, 24)];
于 2011-03-10T19:00:52.427 回答
1
  1. 在您的函数返回后,iPad 单元格在添加到表格时会调整大小。如果您希望文本字段随单元格一起调整大小,您可以执行类似textName.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight.
  2. 您应该将自定义视图添加到 contentView(即[cell.contentView addSubview:textName])。内容视图会自动缩小以处理编辑模式等。

如果您只想调整布局,子类化 UITableViewCell 有点矫枉过正——我的印象是自动调整大小比使用 layoutSubviews 手动调整大小要快。

于 2011-03-10T19:54:58.810 回答