UITableViewCell 样式字幕多行不起作用

Posted

技术标签:

【中文标题】UITableViewCell 样式字幕多行不起作用【英文标题】:UITableViewCell style subtitle mutiple line not working 【发布时间】:2016-11-09 05:20:40 【问题描述】:

我有一个自定义样式UITableviewCell,它有其他的默认高度我正在使用带有字幕样式的表格视图单元格,我想让字幕成为多行。它做得很好,但在计算 tableview 单元格高度时遇到问题,我使用 UITableviewAutomaticDimension 但它不起作用。 这是我的代码

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    if(indexPath.row==0)
        var cell: ImageCell! = tableView.dequeueReusableCellWithIdentifier("ImageCell") as? ImageCell
        if cell == nil 
            tableView.registerNib(UINib(nibName: "ImageCell" ,bundle: nil), forCellReuseIdentifier: "ImageCell")
            cell = tableView.dequeueReusableCellWithIdentifier("ImageCell") as? ImageCell
        
        return cell
    else

        var cell: UITableViewCell? = tableView.dequeueReusableCellWithIdentifier("SubtitleCell")
        if (cell == nil) 
            cell = UITableViewCell.init(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "SubtitleCell")
            cell!.backgroundColor = UIColor.brownColor()
            cell!.textLabel?.font = UIFont.init(name: "HelveticaNeue", size: 15)
            cell!.textLabel?.textColor = UIColor.blackColor()
            cell!.textLabel?.highlightedTextColor = UIColor.lightGrayColor()
            cell!.selectedBackgroundView = UIView.init()
        
        cell!.textLabel?.text = "TExt"
        cell!.detailTextLabel!.text="Keep in mind that UITableView is defined as an optional in the function, which means your initial cell declaration needs to check for the optional in the property. Also, the returned queued cell is also optional, so ensure you make an optional cast to UITableViewCell. Afterwards, we can force unwrap because we know we have a cell."
        allowMultipleLines(cell!)
        cell!.imageView?.image = UIImage(named: "IconProfile")

        return cell!
    

func allowMultipleLines(tableViewCell:UITableViewCell) 
    tableViewCell.detailTextLabel?.numberOfLines = 0
    tableViewCell.detailTextLabel?.lineBreakMode = NSLineBreakMode.ByWordWrapping

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
    if(indexPath.row==0)
        return 172
    else
       return UITableViewAutomaticDimension
    

【问题讨论】:

可能重复***.com/questions/36587126/… 【参考方案1】:

在你的viewDidLoad()方法中你需要写

yourTableViewName.rowHeight = UITableViewAutomaticDimension

再添加一个方法

func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
    if(indexPath.row==0)
        return 172
    else
        return UITableViewAutomaticDimension;
    

希望对你有帮助

【讨论】:

您使用的是自动布局? 是的,自动布局被选中。 只需注释 heightForRowAtIndexPath 方法并运行您的项目 不,它不适用于多行字幕。它只为每行高度返回 45 左右。

以上是关于UITableViewCell 样式字幕多行不起作用的主要内容,如果未能解决你的问题,请参考以下文章

错误:无法使用自定义单元格类设置 UITableViewCell 标签和图像!只能加载单元格样式的数据:字幕不是自定义的

UITableViewCell 中的字幕对齐

UITableViewCell 的字幕不会更新

UITableViewCell 中带有多行标签的 UIStackView 高度不正确

在 UITableViewCell 中的 detailTextLabel 中添加多行

表格单元格字幕不显示