Willis Haung
Willis Haung

Reputation: 21

Type 'ViewController' does not conform to protocol 'UITableViewDataSource'

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

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

    var alphNames = ["ABC","DEF","GHI","JKL","MNO","PQR","STU"]

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

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
           let cellIdentifier = "Cell"
           let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath : indexPath) as UITableViewCell

           //Configure the cell...
           cell.textLabel?.text = departmentNames[indexPath.row]
           return cell
    }

}

Upvotes: 0

Views: 6348

Answers (2)

gasho
gasho

Reputation: 1931

You have to implement all the required functions. You can see them by command clicking on the UITableViewDataSource. To make sure you don't make any typo, just copy the required functions or start typing in the ViewController the name of the function and autocompletion should do the rest.

Upvotes: 0

rakeshbs
rakeshbs

Reputation: 24572

You made an typo in numberOfRowsInSection function. It is a required function of the UITableViewDataSource protocol. It should be

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

You have typed numberofRowInsection instead.

Upvotes: 5

Related Questions