自定义uitableviewcell内的动态tableview

时间:2015-04-06 15:00:47

标签: ios uitableview swift

我尝试使用自定义单元格创建一个tableview,每个单元格都包含一个tableview。 我想在它有一些数据时显示内部tableview(大部分时间它都是空的)。我设法显示了单元格,但如果填充了数据,则无法显示其表格视图。

问题还在于,根据要显示的数据量,单元格高度需要是动态的。

单元格代码:

class feedViewCell: UITableViewCell , UITableViewDataSource , UITableViewDelegate {

@IBOutlet var feedCellImage: UIImageView!
@IBOutlet var feedCellUserName: UILabel!
@IBOutlet var feedCellDate: UILabel!
@IBOutlet var feedCellComments: UILabel!
@IBOutlet var cardView: UIView!

@IBOutlet var repliesTableView: UITableView!

var repliesArray:[Reply] = []

@IBAction func addComment(sender: AnyObject) {
}

override func awakeFromNib() {
    super.awakeFromNib()
    var nib = UINib(nibName: "feedComment", bundle: nil)
    repliesTableView.registerNib(nib, forCellReuseIdentifier: "commentCell")
}


override func setSelected(selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

override func layoutSubviews() {
    cardSetup()
}

func cardSetup() {
    cardView.layer.masksToBounds = false
    cardView.layer.cornerRadius = 5
    cardView.layer.shadowOffset = CGSizeMake(-0.2, 0.2)
    cardView.layer.shadowRadius = 1
    cardView.layer.shadowOpacity = 0.2
}

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    var cell = repliesTableView.dequeueReusableCellWithIdentifier("commentCell", forIndexPath: indexPath) as CommentFeedCell
    cell.commentCellUserName.text = repliesArray[indexPath.row].userName

    return cell
}

}

主控制器代码:

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    var comment = comments[indexPath.row]
    let cell: feedViewCell = tableView.dequeueReusableCellWithIdentifier("feedCell", forIndexPath: indexPath) as feedViewCell
    cell.feedCellUserName.text = comment.userName
    cell.feedCellImage.backgroundColor = UIColor.redColor()
    cell.feedCellComments.text = "\(comment.replies.count) COMMENTS"
    cell.repliesArray = comment.replies

    var dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat = "dd-MM-yyy"
    cell.feedCellDate.text = dateFormatter.stringFromDate(NSDate())

    if cell.repliesArray.count > 0 {
        cell.repliesTableView.rowHeight = UITableViewAutomaticDimension
    }
    cell.repliesTableView.reloadData()

    return cell

}

如何仅在具有注释的单元格中显示内部tableview(并将tableview隐藏在带有0条注释的单元格中)?

1 个答案:

答案 0 :(得分:-1)

在layoutSubviews中调用super,让我们知道会发生什么。

override func layoutSubviews() {
    super.layoutSubviews()
    cardSetup()
}