2016-05-25 88 views
1

我試圖創建一個使用兩個自定義UITableViewCells二合一UITableViews視圖控制器。我有以下幾點:如何在一個視圖控制器中使用兩個自定義UITableViewCells創建兩個表視圖?

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    if tableView == self.tableView { 
     let cell = tableView.dequeueReusableCellWithIdentifier("CustomOne") as! CustomOneTableViewCell 
     return cell 
    } 

    if tableView == self.autoSuggestTableView { 
     let cell = tableView.dequeueReusableCellWithIdentifier("CustomTwo") as! CustomTwoTableViewCell 
     return cell 
    } 
} 

但我不斷收到錯誤:

Missing return in a function expected to return 'UITableViewCell' 

我有什麼的方法結束返回?

+0

您需要在方法結尾處返回一些內容。如果'tableView'不是'self.tableView'或'self.autoSuggestTableView',該方法返回什麼? – quant24

+0

@ quant24這已經涵蓋在答案中。 – rmaddy

+0

@rmaddy謝謝,我注意到了太晚了。 – quant24

回答

12

錯誤出現,因爲如果因任何原因,表視圖是不可的,你寫了兩個選項,那麼它不沒有任何價值可返回,只需在末尾添加return nil

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    if tableView == self.tableView { 
     let cell = tableView.dequeueReusableCellWithIdentifier("CustomOne") as! CustomOneTableViewCell 
     return cell 
    } else if tableView == self.autoSuggestTableView { 
     let cell = tableView.dequeueReusableCellWithIdentifier("CustomTwo") as! CustomTwoTableViewCell 
     return cell 
    } 

    return nil 
} 
+0

如果只有兩個表格,它怎麼可能不是兩個表格中的一個? – Gruntcakes

+0

@ThePumpingLama該函數需要一個返回值,並且有一個不返回任何值的「道路」。 – Fantini

+0

@rmaddy是的,這是正確的,我認爲這是你要管理的任何不受歡迎的行爲如何做一個設計決策。 – Fantini

9

你的問題是,編譯器會在這兩個if聲明可能是假的,你不要在這種情況下返回任何東西,因此錯誤的可能性。

如果你只有兩個表,最簡單的變化是這樣的:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    if tableView == self.tableView { 
     let cell = tableView.dequeueReusableCellWithIdentifier("CustomOne") as! CustomOneTableViewCell 
     return cell 
    } else { 
     let cell = tableView.dequeueReusableCellWithIdentifier("CustomTwo") as! CustomTwoTableViewCell 
     return cell 
    } 
} 
相關問題