XCODE:不符合UITableViewDataSource - 方法是对的,{}是对的

时间:2017-07-22 05:56:10

标签: ios xcode

请帮助,我在我的智慧结束。我已经按照多个教程,阅读了类似于我能找到的每个线程,五个小时之后,我仍然迷路并得到同样的错误:“类型ViewController不符合UITableViewDataSource。”

代码:

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet var proTable: UITableView!



override func viewDidLoad() {
    super.viewDidLoad()
    proTable.reloadData()

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

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "Default Pros")

        cell.textLabel?.text = pcMgr.pros[indexPath.row].name

        return cell
    }

    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath){
        if (editingStyle == UITableViewCellEditingStyle.delete){

            pcMgr.pros.remove(at: indexPath.row)
            proTable.reloadData()
        }
        }
}

}

4 个答案:

答案 0 :(得分:1)

用这个替换你的代码,你已经使用了<script> var grandtotal=0; function startCalc(event){ var el=event.target; var parent=el.parentNode.parentNode; var price=parent.querySelectorAll('input[name="price"]')[0]; var disc=parent.querySelectorAll('input[name="disc"]')[0]; var out=parent.querySelectorAll('span[data-name="tot"]')[0]; var tot=parseFloat( price.value ) * parseInt( disc.value ); var subtot=parseFloat( price.value )-parseInt( tot ); grandtotal+=subtot; out.innerHTML=subtot; } </script> 函数内的旧语法。

viewDidLoad

答案 1 :(得分:0)

所需UITableViewDataSource方法的语法不正确。 试试这个:

    @available(iOS 2.0, *)
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        <#code#>
    }

    @available(iOS 2.0, *)
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        <#code#>
    }

因为你已经符合协议,我建议在方法声明中使用XCode自动完成。使用escape键查看方法声明。

答案 2 :(得分:0)

Swift 3中协议函数的正确语法

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell ;
return cell
}

在viewDidLoad方法之外使用这些方法。这些方法应该在viewDidLoad中。

答案 3 :(得分:0)

- 从viewDidLoad()

中删除函数

- 删除数组

- 添加功能&#34; numberOfSections&#34;到代码

希望这有帮助!

"\0GITCRYPT\0"