2015-04-04 69 views
1

我添加了另一個模型到我的數據庫,我基本上重新創建了與上一個模型相同的方法,但是這次我得到以下錯誤:iOS8 Swift - 表視圖 - 控制器不符合協議UITableViewDataSource

ContactsDetailViewController.swift:11:1: Type 'ContactsDetailViewController' does not conform to protocol 'UITableViewDataSource'

編輯:我也收到這些錯誤,但同樣,我看不出問題是:

/Volumes/BigMan/Code/Swift/BackpackerSpots/UIKit.UITableViewDataSource:3:48: Protocol requires function 'tableView(_:cellForRowAtIndexPath:)' with type '(UITableView, cellForRowAtIndexPath: NSIndexPath) -> UITableViewCell'

/Volumes/BigMan/Code/Swift/BackpackerSpots/BackpackerSpots/ContactsDetailViewController.swift:14:19: Candidate is not a function

這裏是我的ContactsDetailViewController:

import UIKit 

class ContactsDetailViewController: UIViewController, UITableViewDataSource, 
    UITableViewDelegate { 
    @IBOutlet var tableView:UITableView! 

    var contact:Contact? 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     // customizing background of tableview 
     self.tableView.backgroundColor = UIColor(red: 240.0/255.0, green: 240.0/255.0, blue: 240.0/255.0, alpha: 0.2) 

     // remove extra separators 
     self.tableView.tableFooterView = UIView(frame: CGRectZero) 

     // change the color of the separator 
     self.tableView.separatorColor = UIColor(red: 240.0/255.0, green: 240.0/255.0, blue: 240.0/255.0, alpha: 0.8) 

     // self-sizing cells 
     tableView.estimatedRowHeight = 36.0 
     tableView.rowHeight = UITableViewAutomaticDimension 

    } 


    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) 
     -> Int { 
     return 4 
    } 

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: 
     NSIndexPath) -> UITableViewCell { 

      let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as ContactsDetailTableViewCell 
      // make cell transparent so background color can be seen 
      cell.backgroundColor = UIColor.clearColor() 


      switch indexPath.row { 
      case 0: 
       cell.fieldLabel.text = "Name" 
       cell.valueLabel.text = contact?.contactName 
      case 1: 
       cell.fieldLabel.text = "Email" 
       cell.valueLabel.text = contact?.contactEmail 
       cell.mapButton.hidden = false 
      default: 
       cell.fieldLabel.text = "" 
       cell.valueLabel.text = "" 

      } 

      return cell 
    } 

} 

這裏是ContactsDetailTableViewCell:

import UIKit 

class ContactsDetailTableViewCell: UITableViewCell { 
    @IBOutlet weak var fieldLabel:UILabel! 
    @IBOutlet weak var valueLabel:UILabel! 

    override func awakeFromNib() { 
     super.awakeFromNib() 
     // Initialization code 
    } 

    override func setSelected(selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 

     // Configure the view for the selected state 
    } 

} 

我必須忽視的東西比較簡單,但我只是不想看到它,我一直與此掙扎數小時。任何建議將不勝感激。謝謝。

回答

1

的幾件事情在上面的代碼,我想指出。

  1. 在的cellForRowAtIndexPath方法,您使用的小區標識爲「細胞」,請確保您使用的是故事板相同的名稱和它的整個項目唯一的。
  2. 在的cellForRowAtIndexPath方法,支架沒有正確地標註

試着寫下面這行的單元格:

let cell : ContactsDetailTableViewCell = tableView.dequeueReusableCellWithIdentifier("ContactsDetailTableViewCell", forIndexPath: indexPath) as ContactsDetailTableViewCell 

注:請確保您在故事板重命名標識了。

+0

謝謝你,那是真的。 – damianesteban 2015-04-04 04:13:01

1

我想你應該添加override

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
} 


override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
} 
相關問題