自定义UITableViewCell不符合协议UITableViewDataSource?

时间:2016-01-09 17:11:12

标签: ios swift uitableview custom-cell

我关注了this post并将UITableViewCell SummaryCell UITableView detailTableView放入我的自定义内Type 'SummaryCell` does not conform to protocol `UITableViewDataSource`

但现在我收到了错误:

SummmaryCell

如果有人能说出我做错了什么&如何解决这个问题我会非常感激!

class SummaryCell: UITableViewCell, UITableViewDelegate, UITableViewDataSource{ @IBOutlet weak var dayOfWeek: UILabel! @IBOutlet weak var totalSpent: UILabel! @IBOutlet weak var totalSpentView: UIView! @IBOutlet weak var heightOfMainView: NSLayoutConstraint! @IBOutlet weak var detailTableView: UITableView! var data: [Expense] = [Expense]() override func awakeFromNib() { super.awakeFromNib() // Initialization code detailTableView.delegate = self detailTableView.dataSource = self //create data array let calendar = NSCalendar.currentCalendar() let dateComponents = NSDateComponents() dateComponents.day = 14 dateComponents.month = 5 dateComponents.year = 2015 dateComponents.hour = 19 dateComponents.minute = 30 let date = calendar.dateFromComponents(dateComponents) data = [Expense(amountSpent: 60), Expense(amountSpent: 20, date: date!), Expense(amountSpent: 40, date: date!, function: Function.Social, category: Category.Fun, subcategory: Subcategory.Events)] } override func setSelected(selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated) // Configure the view for the selected state } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return data.count } func numberOfSectionsInTableView(tableView: UITableView) -> Int { return 1 } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier("detailCell") as! DetailTableViewCell return cell } } 的代码:

summaryCell

inspectdb的样子:

enter image description here

2 个答案:

答案 0 :(得分:3)

UITableViewCell类符合UITableViewDataSourceUITableViewDelegate协议通常被视为不良做法。

我强烈建议将这两者都设置为包含表视图的视图控制器,可以想象这可能会导致您的错误。

答案 1 :(得分:1)

要跟进return false's answer,单元格应该只负责自己的观点。它的tableView不应该有一个属性。对于单元格而言,它通常是一个糟糕的设计,需要知道或控制其超视图层次结构中的任何视图。

此外,如果您考虑不可能将可重复使用的单元格作为委托进行取消初始化,则tableView将不再具有委托。