2016-11-28 60 views
0

我不理解爲什麼我的應用程序不編譯。這是目前的輸出:與「類型'ViewController'相關的編譯和生成錯誤不符合協議'UITableViewDataSource'」

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { 

    var IndexArray = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"] 
    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. 
    } 

    func numberOfSectionsinTableView(tableView: UITableView) -> Int { 
     return IndexArray.count 
    } 

    func tableView(tableView: UITableView, tiltleForHeaderInSection section: Int) -> String? { 
     return IndexArray[section] 
    } 

    func sectionIndexTitlesfortableView (tableView: UITableView) -> [String]? { 
     return IndexArray 
    } 

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

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "TableCell", for: indexPath as IndexPath) as! TableCell 

     cell.imgPhoto.image = UIImage(named: "charity") 
     cell.lblUserName.text! = "User Name" 

     return cell 
    } 

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    } 
} 
+0

您所有的實現代碼如下方法有拼寫錯誤/ miscapitalized單詞或正在使用的是快速的3種不同的SWIFT 2個方法簽名。使用Xcode的自動完成來獲得正確的簽名。 – dan

+0

你在談什麼Swift版本?該代碼是一個Swift 2/3混合調整器。 – vadian

+0

我相信我正在使用Swift版本3.我不確定如何確定Swift版本。 –

回答

0

您缺少指定在您的類派生的協議中聲明的幾個方法。

func tableView(UITableView,cellForRowAt:IndexPath) 必需。請求數據源爲單元插入表視圖的特定位置。

func tableView(UITableView,numberOfRowsInSection:Int) 必需。通知數據源返回表視圖給定部分中的行數。

至少上面的兩個方法必須在你的類中聲明,否則你會得到錯誤。

這些只是所需的方法,但爲了以正確的方式運行,您需要定義其他方法。查看UITableViewDataSource協議蘋果文檔

+0

在我觀看的視頻中,上面的代碼全部包含在內,他的應用程序能夠成功啓動。應該更改代碼以便應用程序成功編譯? –

+0

也許這個視頻是爲較老的iOS版本製作的......很難說。實施標記爲您決定添加的協議所需的功能,並且錯誤應該消失。 – Sergiob

0

在斯威夫特3所有方法簽名已更改爲:

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

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { } 

func sectionIndexTitles(for tableView: UITableView) -> [String]? { } 

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

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

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {} 
相關問題