【问题标题】:Add multiple lines to detailTextLabel in UITableViewCell在 UITableViewCell 中的 detailTextLabel 中添加多行
【发布时间】:2010-08-20 23:07:03
【问题描述】:

我使用的是UITableView,单元格样式为UITableViewCellStyleValue1

我想在detailTextLabel 中有多行,这可能吗?还是我必须制作一个自定义单元格?

【问题讨论】:

    标签: ios iphone uitableview


    【解决方案1】:

    您可以设置cell.detailTextLabel.numberOfLines = 2 以在其中获取 2 行。但是,我怀疑 UITableViewCell 在这种情况下会按照您的预期布置标签。您可能希望继承 UITableViewCell 并覆盖 -layoutSubviews 以根据需要定位标签。您可以致电[super layoutSubviews],然后调整标签的位置。您可能需要使用-[NSString sizeWithFont:constrainedToSize:lineBreakMode:] 来计算详细文本标签的正确大小。

    或者,您可以尝试在-tableView:willDisplayCell:forRowAtIndexPath: 中进行调整,而不是继承 UITableViewCell,但如果单元格决定需要重新布局,那么您的调整将被删除。我建议您使用子类化方法。

    编辑:顺便说一句,使用子类方法,您只需将[UITableViewCell alloc] 更改为[MyTableViewCellSubclass alloc]。由于您没有引入新的方法或属性,因此该变量仍可以保持为 UITableViewCell 的类型,您无需更改任何其他代码。

    【讨论】:

    • 非常感谢您的回复。我对 UITableViewCell 进行了子类化,但我创建了一个笔尖来布局标签,而不是以编程方式进行。这和你建议我做的有什么不同。还是谢谢。
    • 创建一个 nib 非常好(不过如果你使用的是 iOS 4.0,我建议使用 UINib 来优化 nib 加载)。使用-layoutSubviews 调整标签的好处是您可以重用现有的textLabeldetailTextLabel 属性,但您绝不需要使用这些属性。
    • cell.detailTextLabel 在最近的 swift 版本中现在是可选的,所以 cell.detailTextLabel.numberOfLines = 2 应该是 cell.detailTextLabel!.numberOfLines = 2
    • 不应该是cell.detailTextLabel?.numberOfLines = 2。强制展开意味着如果您在没有详细标签的单元格上运行该行,您的整个应用程序将会崩溃。
    【解决方案2】:

    detailTextLabel 是一个 UILabel,自动换行规则与您创建的标签一样适用。

    http://developer.apple.com/iphone/library/documentation/uikit/reference/UILabel_Class/Reference/UILabel.html#//apple_ref/occ/instp/UILabel/lineBreakMode

    编辑:只是想,如果文本超出某些行阈值,您还需要更改单元格的高度。大概 2 或 3 个就可以了。

    【讨论】:

      【解决方案3】:

      至少在 iOS 11 上,只要添加这一行就可以了。

      cell.detailTextLabel.numberOfLines = 2;
      

      【讨论】:

        【解决方案4】:

        在 SWIFT 4.0 及更高版本上:

        cell.detailTextLabel?.numberOfLines = 0
        

        除非您不想超过 2 行,否则不要将 numberOfLines 设置为 2 作为 cmets 中的建议,因为这不是一种有效的编码方式。它不是动态的。行数可能会根据您的屏幕大小、辅助功能设置等而有所不同。将 numberOfLines 设置为 0,让操作系统使用尽可能多的行来正确显示您的文本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多