添加到 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)的主要内容,如果未能解决你的问题,请参考以下文章
将大于 cellHeight 的子视图添加到 UITableViewCell?
将 UIImageView 添加到自定义 UITableViewCell