我必须对不可编辑的单元格使用 -[UITableViewCell contentView] 吗?



我正在构建类似于本机iPhone Mail应用程序的撰写页面的东西。

但是,我将两个文本字段放在一行上,我想用垂直分隔符(附加视图(将它们分开,该分隔符的颜色和粗细与水平单元格分隔符相同。

苹果的文件说:

如果要通过简单地添加其他视图来自定义单元格,则应将它们添加到内容视图中,以便在单元格转换到和退出编辑模式时正确定位它们。

但是,如果我知道,就像在这种情况下一样,我的单元格永远不会进入编辑模式怎么办?

此外,水平单元格分隔符是单元格的子视图,而不是单元格的内容视图。因此,我认为如果我将垂直分隔符添加到单元格而不是单元格的内容视图,这也是有意义的。

我可以只向单元格本身添加其他视图而不是其内容视图吗?

您可以直接向单元格添加其他视图,但最佳做法是将它们添加到单元格的内容视图中。即使你的细胞永远不会进入编辑模式,这也是苹果和其他可能正在处理你的代码(或你将来(的开发人员所期望的。因此,这将使他们更轻松地使用您的应用程序。

例如,如果 Apple 假设决定在未来的 iOS 版本中将装订线放在纯样式表视图的左侧和右侧,该怎么办?然后,它们可能会插入单元格的内容视图,但不会插入单元格本身。这样,如果您相对于内容视图定位其他视图,则您的应用有更好的机会看起来不错,并且其他视图更有可能不会被 Apple 假设的装订线剪裁。好吧,我怀疑Apple会做这样的事情,但关键是,如果您将其他视图添加到单元格的内容视图而不是单元格本身,则代码将更加健壮。

对于您的具体情况,我仍然建议将垂直分隔符添加到单元格的内容视图中,因为您可以。您甚至可以考虑设置tableView.separatorStyle = UITableViewCellSeparatorStyleNone分隔符并重新绘制自定义分隔符,方法是在每个单元格的内容视图的底部添加分隔符视图。这样,您可以确保添加的垂直分隔符的样式始终与分隔符的样式匹配。同样,这将使您的代码更加健壮,并在 Apple 决定更改其分隔符的样式时保护您。当然,您可以使用 cell.separatorColor .而且,您可以使用cell.frame.size.height - cell.contentView.frame.size.height来猜测分离器重量。但是,这样的聪明可能会给你带来麻烦。

正如佛陀告诫悉达多:"当心太聪明!

最新更新