ViewController不符合协议UITableViewDataSource

时间:2016-06-30 12:42:22

标签: ios objective-c xcode swift cocoa-touch

我最近遇到了一个问题。

enter image description here

我也会发布一些代码。尝试从互联网上的方法,但没有成功。此外,我已将2个表链接到View Controller。

enter image description here

这是一些代码。

class ViewController2: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var carImageView: UIImageView!
    @IBOutlet weak var pieseDorite: UITableView!
    @IBOutlet weak var pieseDisponibile: UITableView!


    var fullNameArr : [String] = [] // i populate the string in a action button, no problem with the arrays
    var fullNameArrDorit : [String] = []

    override func viewDidLoad()
    {
        super.viewDidLoad()
        carImageView.image = UIImage(named: ("simplu"))
        carImageView.contentMode = .ScaleAspectFit

        pieseDisponibile.delegate = self
        pieseDisponibile.dataSource = self
        self.view.addSubview(pieseDisponibile)

        pieseDorite.delegate = self
        pieseDorite.dataSource = self
        self.view.addSubview(pieseDorite)
    }


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

    func tableView(pieseDisponibile: UITableView, pieseDorite: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {

        let cell:UITableViewCell=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
        cell.textLabel!.text = String(fullNameArr[indexPath.row])
        return cell
    }

    func tableView2(pieseDorite: UITableView, numberOfRowsInSection section:Int) -> Int
    {
        return fullNameArrDorit.count
    }

    func tableView2(pieseDorite: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {

        let cell2:UITableViewCell=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell2")
        cell2.textLabel!.text = String(fullNameArrDorit[indexPath.row])
        return cell2
    }

}

此外,尝试添加所有其他功能,问题仍然存在。我想我已经把一些不好的东西联系起来,我不知道。

1 个答案:

答案 0 :(得分:2)

请将所有tableView2替换为tableView,并且每个方法只保留1个。您需要为所有UITableView实例使用相同的委托方法。您可以通过将第一个参数与UITableView属性进行比较来分隔此方法中的不同实例。还要添加部分方法的数量:

override func viewDidLoad()
{
    super.viewDidLoad()
    carImageView.image = UIImage(named: "simplu")
    carImageView.contentMode = .ScaleAspectFit

    pieseDisponibile.delegate = self
    pieseDisponibile.dataSource = self
    view.addSubview(pieseDisponibile)

    pieseDorite.delegate = self
    pieseDorite.dataSource = self
    view.addSubview(pieseDorite)
}

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

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
    if tableView == pieseDisponibile {return fullNameArr.count}
    return fullNameArrDorit.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
    if tableView == pieseDisponibile {
        let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell")
        cell.textLabel?.text = String(fullNameArr[indexPath.row])
        return cell
    }
    let cell2 = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "cell2")
    cell2.textLabel?.text = String(fullNameArrDorit[indexPath.row])
    return cell2
}