我设置了它,但没有确认UITableViewDataSource

时间:2019-04-24 19:34:45

标签: ios swift uitableview

我设置了tableview数据源,但是用erorr无法识别 类型“ ViewController”不符合协议“ UITableViewDataSource”

import UIKit

class ViewController: UIViewController ,UITableViewDataSource,UITableViewDelegate{



    override func viewDidLoad() {
        super.viewDidLoad()

        var contact : [pedped]=[]

        let asghar = pedped()
        asghar.nmae="asghar "
        asghar.lname="ghasemi"
        asghar.image="asghar"

        let akbar = pedped()
        akbar.nmae="akbar "
        akbar.lname="askj"
        akbar.image="asgkajsjkashar"


        contact.append(asghar)
        contact.append(akbar)



        func numberOfSections(in tableView: UITableView) -> Int {
            return 1
        }
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return contact.count
        }

        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell=tableView.dequeueReusableCell(withIdentifier: "id", for: indexPath)as!custom
            let contacts = contact[indexPath.row]
            cell.lablename.text = contacts.nmae
            cell.lastnamelable.text = contacts.lname
            return cell
        }

    }


}

2 个答案:

答案 0 :(得分:1)

尽管ViewController符合UITableViewDataSource,但是您在错误位置实现了方法。您必须将它们删除到viewDidLoad之外。

此外,请确保表视图数据源/委托已连接到视图控制器本身,无论是从界面构建还是从代码:

// create an IBOutlet for the table view then:
tableView.dataSource = self
tableView.delegate = self

答案 1 :(得分:0)

这可能无法100%起作用,但至少向您展示了一种更好的组织代码的方法

import UIKit

class ViewController: UIViewController {
    var contact = [pedped]() // Int

    override func viewDidLoad() {
        super.viewDidLoad()

        let asghar = pedped()
        asghar.nmae="asghar "
        asghar.lname="ghasemi"
        asghar.image="asghar"

        let akbar = pedped()
        akbar.nmae="akbar "
        akbar.lname="askj"
        akbar.image="asgkajsjkashar"


        contact.append(asghar)
        contact.append(akbar)
    }
}

extension ViewController: UITableViewDataSource 

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

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell=tableView.dequeueReusableCell(withIdentifier: "id", for: indexPath)as!custom
        let contacts = contact[indexPath.row]
        cell.lablename.text = contacts.nmae
        cell.lastnamelable.text = contacts.lname
        return cell
    }
}

extension ViewController: UITableViewDelegate {
   // Put any UITableViewDelegate functions here
}