2015-04-04 53 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 { 
} 
相关问题