我关注了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
的样子:
答案 0 :(得分:3)
将UITableViewCell
类符合UITableViewDataSource
和UITableViewDelegate
协议通常被视为不良做法。
我强烈建议将这两者都设置为包含表视图的视图控制器,可以想象这可能会导致您的错误。
答案 1 :(得分:1)
要跟进return false's answer,单元格应该只负责自己的观点。它的tableView不应该有一个属性。对于单元格而言,它通常是一个糟糕的设计,需要知道或控制其超视图层次结构中的任何视图。
此外,如果您考虑不可能将可重复使用的单元格作为委托进行取消初始化,则tableView将不再具有委托。