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 に答える