0

我尝试使用本教程复制可扩展的表格视图单元格

我将展示我所做的并指出我在这里缺少什么?!我被困在这里。如果您指出我错过的步骤将会很有帮助!

表视图控制器

class ExpandableCell: UITableViewController {

let titles = ["one" , "two"]    

override func viewDidLoad() {
    super.viewDidLoad()

    tableView.rowHeight = UITableViewAutomaticDimension
    tableView.estimatedRowHeight = 125
//  tableView.tableFooterView = UIView(frame: CGRectZero)
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return titles.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! TableCell

    cell.title.text = titles[indexPath.row]
    cell.indexPath = indexPath


    switch expandedIndexPath {
    case .Some(let expandedIndexPath) where expandedIndexPath == indexPath:
        cell.showsDetails = true
    default:
        cell.showsDetails = false
    }

    return cell

}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    tableView.deselectRowAtIndexPath(indexPath, animated: false)

    switch expandedIndexPath {
    case .Some(_) where expandedIndexPath == indexPath:
        expandedIndexPath = nil
    case .Some(let expandedIndex) where expandedIndex != indexPath:
        expandedIndexPath = nil
        self.tableView(tableView, didSelectRowAtIndexPath: indexPath)
    default:
        expandedIndexPath = indexPath
    }

}

var expandedIndexPath: NSIndexPath? {
    didSet {
        switch expandedIndexPath {
        case .Some(let index):
            tableView.reloadRowsAtIndexPaths([index], withRowAnimation: UITableViewRowAnimation.Automatic)
        case .None:
            tableView.reloadRowsAtIndexPaths([oldValue!], withRowAnimation: UITableViewRowAnimation.Automatic)
        }
    }
  }
}

表视图单元格

class TableCell: UITableViewCell {

@IBOutlet weak var title: UILabel!
@IBOutlet weak var descriptionConstraint: NSLayoutConstraint!
@IBOutlet weak var descriptionNew: UILabel!

//    let detailViewDefaultHeight: CGFloat = 44
let lowLayoutPriority: Float = 250
let highLayoutPriority: Float = 999


var showsDetails = false {
    didSet {
        descriptionConstraint.priority = showsDetails ? lowLayoutPriority : highLayoutPriority
    }
}

var indexPath = NSIndexPath()

override func awakeFromNib() {
    super.awakeFromNib()
    descriptionConstraint.constant = 0
  }
}

故事板

在此处输入图像描述

这是我得到的输出,而不是我想要得到的输出,

在此处输入图像描述

4

2 回答 2

0

根据您的代码,我认为您是否缺少以下方法:-

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat
    {
        return UITableViewAutomaticDimension
    }
于 2016-04-26T09:33:46.913 回答
0

好像您已经以相反的顺序设置了低优先级和高优先级值

var showsDetails = false {
    didSet {
        descriptionConstraint.constant = showsDetails ? highLayoutPriority: lowLayoutPriority 
    }
}
于 2016-04-26T12:51:10.757 回答