'的ViewController'不符合协议' UITableViewDataSource'迅速

时间:2016-08-16 07:09:41

标签: swift uitableview uiviewcontroller

我已经搜索并得到了这些问题,解决了同样的问题。

但是,我没有在答案中提到任何错误。

这是我的代码:

class RightViewController: ParentViewController, UITableViewDelegate, UITableViewDataSource {

//properties
var itemsArray: [String] = ["set", "git"]
@IBOutlet var tableView:UITableView! = UITableView()


override func viewDidLoad() {
    super.viewDidLoad()

    //register cell

    self.tableView!.registerClass(MenuCell.self, forCellReuseIdentifier: "MenuCell")
    tableView!.rowHeight = UITableViewAutomaticDimension
    tableView!.estimatedRowHeight = 140
    tableView!.delegate = self
    tableView!.dataSource = self

}

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

// MARK: <TableViewDataSource>

func numberOfSectionsInTableView(tableView: UITableView) -> Int
{
    return 1
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return itemsArray.count
}

func tableView(tableView: UITableView, cellForRowAt indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("MenuCell", forIndexPath: indexPath) as! MenuCell

    if (indexPath as NSIndexPath).row < itemsArray.count {
        let option = itemsArray[(indexPath as NSIndexPath).row]

        cell.titleLabel?.text = option

    }

    return cell

}

我已经实现了所有必需的协议方法,它们都在我班级的范围内。我仍然得到这个恼人的错误。我的代码中的ParentViewController实际上是另一个UIViewController

enter image description here 哪里我可能错了。提前致谢。

1 个答案:

答案 0 :(得分:3)

问题是您使用的是较低版本的swift而不是swift 3.0,方法cellForRowAt indexPath适用于swift 3.0,因此您需要使用此cellForRowAtIndexPath代替那。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("MenuCell", forIndexPath: indexPath) as! MenuCell        
    if (indexPath as NSIndexPath).row < itemsArray.count {
        let option = itemsArray[(indexPath as NSIndexPath).row]            
        cell.titleLabel?.text = option            
    }        
    return cell        
}