Ios 我设置了,但没有';t确认UITableViewDataSource

Ios 我设置了,但没有';t确认UITableViewDataSource,ios,swift,uitableview,Ios,Swift,Uitableview,我设置了tableview数据源,但它无法识别他的erorr 类型“ViewController”不符合协议“UITableViewDataSource” import UIKit class ViewController: UIViewController ,UITableViewDataSource,UITableViewDelegate{ override func viewDidLoad() { super.viewDidLoad() v

我设置了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
        }

    }


}

这可能不会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
}

尽管
ViewController
符合
UITableViewDataSource
,但您在错误的地方实现了这些方法。您必须在
viewDidLoad
之外删除它们

此外,确保表视图数据源/委托已连接到视图控制器本身,无论是从接口生成还是从代码:

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

你把它放在哪里?不是在那个代码里。此外,该代码不符合uitableview协议,因为(根据缩进)数据源函数在viewDidLoad函数中。他们需要置身于此之外。