2015-04-23 55 views
22

我正在嘗試使用xCode 6.3 swift 1.2創建自定義表格視圖單元格。出於某種原因在cellforRowAtIndexPath方法中,我似乎無法設置我的單元格變量。該代碼可以編譯,但是當這行代碼點擊:無法將'UITableViewCell'類型的值轉換爲'(AppName)'(CustomCellName)'

var cell:MessageCell = tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell 

我得到這個錯誤:無法投類型的值「的UITableViewCell」(0x1112f5a18)爲「CampusExchange.MessageCell」(0x10e8318f0)。

這裏是我完整的方法:(我使用的解析,如果你想知道我是如何設置消息)

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

    var cell:MessageCell = tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell 

    let message = messagesArray[indexPath.row]["Message"] as? String 
    cell.messageOutlet.text = message 
    return cell 
} 

感謝您的任何幫助。我似乎無法得到這個工作。

+7

它看起來像你沒有設置故事板中原型單元格的自定義類 – Paulw11

+2

我設置了它。但由於某種原因,它不起作用。隨機工作的是刪除我的單元格的自定義類。然後構建,崩潰應用程序,然後返回並重置自定義類。現在它似乎工作。感謝您指引我朝着正確的方向! – obo20

回答

7

在viewDidLoad中()

// register custom table view cell from nib 
self.tableView.registerNib(UINib(nibName: "MessageCell", bundle: nil), forCellReuseIdentifier: "messageCell") 
52

有您能在這種情況下檢查的幾件事情:

  1. 看看你的表是由@IBOutlet weak var tableView: UITableView!

  2. 鏈接到你的類,通常
  3. 註冊自定義表格視圖單元格:self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") 請注意,您甚至可以使用「UITableViewCell」和標識符「單元格」如果您的自定義單元格具有不同的類和ID。

  4. 在cellForRowAtIndexPath中退出您的單元格:let cell: MessageCell = self.tableView.dequeueReusableCellWithIdentifier("messageCell") as! MessageCell 現在您使用正確的單元格標識符。

+7

在我的特殊情況下,代碼是正確的,但在創建UITableviewCell的故事板中,我忘了使用UITableViewCell的檢查器設置我的自定義類。在自定義類下的檢查器中,當它應該說「UserInfoCell」是我創建的自定義子類的名稱時,它仍然說「UITableViewCell」。 – xdeleon

+0

第2點。幫助很多。謝謝! –

+1

第2點對我來說也是個問題!這是至關重要的,因爲使用普通的tableview控制器,要註冊的單元格沒有被指定,所以假設重用標識符應該用於兩個地方都是非常直觀的。永遠讓我找到這個答案。非常感謝 –

25

註冊您的CustomCell在viewDidLoad()方法:

self.tableView.register(CustomCell.self, forCellReuseIdentifier: "Cell") 
+0

這解決了我的問題。謝謝 –

+2

同樣在這裏,謝謝你的哥們。 – Danyl

0

首先,我建議你重新創建你的類,使用CocoaClass。我有一個非常相似的錯誤 - 我創建了一個CollectionViewCell,當我認識到我的錯誤時,我決定重命名父類。但是,編譯器沒有注意到任何錯誤,在構建過程中出現此錯誤。

3

我有相同的錯誤信息。但對我而言,問題在於我沒有在界面構建器中設置我的自定義單元的類。

0

斯威夫特3語法:

self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") 
0

我有同樣的錯誤。在的tableview內

  1. 轉到Interface Builder的
  2. 點擊相關的故事板
  3. 點擊相關細胞
  4. 在事業小組:正如他的評論obo2O狀態,他的解決方案爲我(右側),點擊「顯示標識檢查器」圖標
  5. 在「自定義類」部分 - >「類」字段中,將該類設置爲其他任何內容並運行該應用程序。應用程序崩潰,因爲classX不能轉換爲classY
  6. 在「自定義類」部分 - >「類」字段中,將該類設置爲正確的類並重新運行。
0

使用cocoaClass重新創建類,並選擇UItableViewCell

我有這個工作對我來說同樣的問題。

1

我同樣的問題,我設置了電池的自定義類,但忘記了這樣的選擇模塊後置模塊 enter image description here

,它的工作

enter image description here

+1

這適合我! –

相關問題