我尝试使用自定义单元格创建一个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条注释的单元格中)?
答案 0 :(得分:-1)
在layoutSubviews中调用super,让我们知道会发生什么。
override func layoutSubviews() {
super.layoutSubviews()
cardSetup()
}