在 UITableViewCell 中用 UILabel 替换 UIImageView

Posted

技术标签:

【中文标题】在 UITableViewCell 中用 UILabel 替换 UIImageView【英文标题】:Replace the UIImageView with UILabel in a UITableViewCell 【发布时间】:2012-03-15 08:38:38 【问题描述】:

我想创建一个UITableViewCell,它与带有UITableViewCellStyleSubtitle 的标准UITableViewCell 非常相似。用户可以选择一个单元格,并且应在该选定单元格上设置复选标记。

我想在单元格的左侧显示UILabel 而不是UIImage。我尝试将UILabel 添加到contentViewUILabel 显示在文本和详细文本标签上方。当UILabel 向右扩展时,我想将文本和详细文本都向右移动,就像UIImage 一样。

我知道在 Interface Builder 中创建一个自定义单元格,但是我这样做了我不知道如何获取复选标记图像,即设置 UITableViewCellAccessoryCheckmark 时使用的那个。有一个按钮(和其他几个)可用的披露,但复选标记似乎不可用。有没有办法获取复选标记图标并在 Interface Builder 的自定义单元格中使用它?我不想自己做复选标记。

我已经搜索了 Internet 和 ***,但我找不到我的问题的答案。我想我错过了一个关键部分,但我自己无法弄清楚这一点。

是否有任何免费的开源或知识共享替代品?

【问题讨论】:

【参考方案1】:

如果我正确理解了所有内容,似乎最简单的做法是不使用单元格上的内置文本和详细文本并自定义这些标签。

然后在你的:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 根据需要调整标签的宽度/偏移量。

对于复选标记,如果您不调整显示图像的显示位置,您应该可以使用 cell.accessoryType = UITableViewCellAccessoryCheckmark 进行设置

【讨论】:

【参考方案2】:

如果您所说的“复选标记”是指带有勾号或类似功能的框,用户可以通过点击打开或关闭,那么恐怕您不走运,因为 cocoa-touch 不包含此类控件。

但是,自己动手做起来比您想象的要容易。您只需要一对或 png 图像用于图形(一个用于“选中”,一个用于“未选中”)。网络上有数以千计的免费图标和按钮。

然后你可以像这样创建一个自定义UIButton

UIButton *checkmark = [UIButton buttonWithType:UIButtonTypeCustom];
[checkmark setImage:[UIImage imageNamed:@"unchecked"] forState:UIControlStateNormal];
[checkmark setImage:[UIImage imageNamed:@"checked"] forState:UIControlStateSelected];

然后您可以使用selected 属性检查按钮的状态(无论是否选中)。有关 selected 的更多信息,请参阅 Apple 文档 here。

【讨论】:

我指的是UITableViewCellAccessoryCheckmark属性设置的复选标记【参考方案3】:

而是以编程方式创建自定义单元格。

有示例代码here。

也可以添加复选标记

cell.accessoryType = UITableViewCellAccessoryCheckmark

给你的

tableViewCellWithReuseIdentifier 或在

cellForRowAtIndexPath 以适合您的应用程序为准。

【讨论】:

以上是关于在 UITableViewCell 中用 UILabel 替换 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章

虚拟化性能监控-Uila

如何让 iOS VoiceOver 整体读取 View 和 subview

自动布局以动态调整 UILabel 大小不起作用

当单元格具有动态宽度时,CollectionView 中的间距不正确?

在 UITableView 中用手指在屏幕上绘图

iOS tableView的一些方法