2016-01-09 119 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將不再有一個委託。

相關問題