MonoTouch 自定义 UITableViewCell AccessoryView 为 Null

Posted

技术标签:

【中文标题】MonoTouch 自定义 UITableViewCell AccessoryView 为 Null【英文标题】:MonoTouch Custom UITableViewCell AccessoryView is Null 【发布时间】:2012-07-24 21:22:03 【问题描述】:

我在我正在构建的 MonoTouch 应用程序中创建了一个自定义 UITableViewCell。在我成功设置的单元格内:

Accessory = UITableViewCellAccessory.DisclosureIndicator;

但是,当我尝试更改 AccessoryView 的背景颜色时,我的应用程序崩溃了,因为 AccessoryView 为空:

AccessoryView.BackgroundColor = UIColor.White;

事实上,单元格中唯一不为空的视图是 ContentView。

有人知道为什么 AccessoryView 是 Null 吗?

【问题讨论】:

【参考方案1】:

AccessoryAccessoryView 属性相关但互不改变。

当您在AccessoryView 中设置自己的自定义 视图时,Accessory 的值将被UITableViewCell 忽略。

有人知道为什么 AccessoryView 是 Null 吗?

同样,如果您设置了Accessory,那么您将无法访问 stock 视图(通过AccessoryView 属性)和支持的事件,例如DisclosureButton 的触摸事件将是单元格(因为您无法访问视图)。

如果您想要一个自定义外观的附件视图,那么您可以自己创建一个并将其分配给AccessoryView 属性。

【讨论】:

感谢您的回答。我不想要一个定制的配件。我的问题是附件背景颜色不是我想要的,也不是我期望的。我的单元格有一个 ContentView,我将其背景颜色设置为白色。我以为我可以对 AccessoryView 做同样的事情。我认为既然我可以更改内容视图的颜色,我应该能够对单元格上的所有视图执行相同的操作。无论如何,我以不同的方式解决了我的问题。请在下面阅读我的答案。再次感谢。【参考方案2】:

我最初的问题是我正在向单元格添加一个附件,但该附件的背景与单元格其余部分的背景不同。它正在获取底层表视图的背景,这不是我想要的。当我尝试将 AccessoryView.Background 颜色设置为我想要的(认为这是罪魁祸首)时,AccessoryView 为空。

我最终解决我的问题的方法是创建一个具有我想要的背景颜色的新 UIView,并将其设置为我的单元格 BackgroundView(因为它最初也是 null)。这解决了我的问题,我的单元格到处都有正确的颜色。

【讨论】:

以上是关于MonoTouch 自定义 UITableViewCell AccessoryView 为 Null的主要内容,如果未能解决你的问题,请参考以下文章

摆脱圆形矩形按钮的圆角(MonoTouch)

MonoTouch:UITabBar 与 UITableView 重叠

如何移除 UITableView (MonoTouch) 中可重用的单元格

MonoTouch 中的自定义 UITableViewCell

MonoTouch 自定义 UITableViewCell AccessoryView 为 Null

Monotouch中的自定义UITabBar