2016-01-09 112 views
0

我跟着this post,并把我的自定义UITableViewCell SummaryCellUITableView detailTableView自定义UITableViewCell不符合协议UITableViewDataSource?

但现在我得到的错误:

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样子:

enter image description here

+0

你有没有听说过MVC? ;-) https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html – vadian

回答

3

它通常被认为是不好的做法,让您的UITableViewCell类符合UITableViewDataSourceUITableViewDelegate协议。

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

+0

让我检查一下我是否正确理解你:你说我应该改变detailTableView UITableView' UITableViewController'吗? ...我只是有点困惑你的第二句话的意思,如果你可以在我的代码中详细说明你的意思 – 14wml

+5

我不确定你是否知道你的意思,实际上想在这里做。为了创建一个tableView,你通常需要一个ViewController,它包含View表,并且包含委托和数据源函数。看起来好像你搞砸了一些东西。你应该明确区分UITableView,UITableViewCell和UIView。我建议阅读本教程以获得对UITableView的更多理解:https://www.ralfebert.de/tutorials/ios-swift-uitableviewcontroller/ – fredpi

1

要追踪到return false's answer,单元格应该只负责自己的视图。它不应该有它的tableView属性。对于单元需要知道或控制超视图层级中的视图的任何内容而言,这通常是一种糟糕的设计。

另外,如果你考虑到不可能的可能性,那就是被重新使用的单元恰好是代表被初始化,tableView将不再有一个委托。

相关问题