添加到 UITableViewCell 的 contentView 的 UITextField 在 Popover 中无法正确显示(iPad、iOS 4.2)

Posted

技术标签:

【中文标题】添加到 UITableViewCell 的 contentView 的 UITextField 在 Popover 中无法正确显示(iPad、iOS 4.2)【英文标题】:UITextField added to contentView of UITableViewCell does not display properly in Popover (iPad, iOS 4.2) 【发布时间】:2011-01-06 02:13:28 【问题描述】:

我正在尝试在 iPad 上的弹出窗口中显示选项表。我正在将 UITextField 添加到默认的 UITableViewCell。该表配置为分段表。

它没有正确绘制并且不显示。 如果选择了该行,则 UITextField 变为可见。如果您单击另一行,它就会消失。

我玩过 subview order 无济于事。有效的是设置 UITableViewCell.backgroundColor = [UIColor clearColor]。

如果我这样做,我认为需要在其他地方设置颜色,例如内容视图,UITableViewCell.contentView.backgroundColor = [UIColor whiteColor];

但是,它仍然无法正确显示。未选中或未选中时看起来很好。但是,如果我以编程方式设置附件复选标记,则附件复选标记的一半背景会以较暗的表格背景颜色清晰显示。

如果选择了该行,它看起来没问题,但是如果选择了另一行,因为带有 UITextField 的行正在被取消选择,在几分之一秒内,您会看到一半的附件背景清晰(透明) .

对于可能出现的问题或如何解决此问题有任何想法或建议吗? Apple 文档明确指出,将视图添加到 ContentView 是实现它的适当方法,但在这种情况下似乎不起作用。

这是我目前在 tableView:cellForRowAtIndexPath 中的代码:

UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(130, 10, 60, 26)];
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.text = @"foo";
[cell.contentView addSubview:textField];
[textField release];

cell.contentView.backgroundColor = [UIColor whiteColor];
cell.backgroundColor = [UIColor clearColor];

【问题讨论】:

可能会显示一个屏幕截图或更多您的弹出框代码。 看看哪些额外的代码有用? 【参考方案1】:

一般来说,设置 UITableViewCell 的 backgroundColor 的地方不是 tableView:cellForRowAtIndexPath:。您必须在 +tableView:willDisplayCell:forRowAtIndexPath:+ 中执行此操作。

您应该不需要更改 contentView 的背景颜色。

【讨论】:

没有解释为什么它不起作用。除非更改 contentView 的 backgroundColor,否则它不会显示。

以上是关于添加到 UITableViewCell 的 contentView 的 UITextField 在 Popover 中无法正确显示(iPad、iOS 4.2)的主要内容,如果未能解决你的问题,请参考以下文章

将按钮添加到 UITableViewCell

如何将目标操作添加到 UITableViewCell

将大于 cellHeight 的子视图添加到 UITableViewCell?

将 UIImageView 添加到自定义 UITableViewCell

防止 UIView 被重新添加到 UITableViewCell

添加到UITableViewCell的UITextField