2016-02-24 87 views
3

我有一個靜態部分的靜態表。其他部分是動態的。dequeueReusableCellWithIdentifier不返回細胞

我創建動態部分表節和表格單元格。集標識符的細胞,它設置自定義類,甚至做:

self.tableView.registerClass(UncheckedStoreTableViewCell.self, forCellReuseIdentifier: "StoreCell") 

enter image description here

如果我不代碼註冊,然後我得到:

「無法出列具有標識符StoreCell細胞 - 必須註冊 筆尖或一類的標識符或者在故事板 」

連接原型細胞

所以當我用這個:

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

    if indexPath.section == 0 { 
     return super.tableView(tableView, cellForRowAtIndexPath: indexPath) 
    } 

    let cell = tableView.dequeueReusableCellWithIdentifier("StoreCell", forIndexPath: indexPath) as! UncheckedStoreTableViewCell 

    return cell 
} 

它的工作原理。但是,如果我試圖更改標籤:cell.myLabel.text = "one" 或只是print(cell.myLabel)

BAD_INSTRUCTION

+0

你不能做這樣的。要麼是全部靜態的,要麼是全部動態的原型 – Johnykutty

+0

嘗試從接口構建器中刪除標識符..或刪除registerClass行。 –

+0

>你不能那樣做。要麼是所有靜態或全動態原型 真的?:(爲什麼? – Arti

回答

2
  1. 你絕對可以使用動態細胞在靜態表視圖。
  2. 不要指望一個靜態表視圖中註冊您的的標識爲您服務。只需自己做。
  3. 你有在細胞類網點在界面生成器的一些看法?如果我是你,我不希望桌面視圖知道這一點。它會實例化你的單元類,就是這樣。沒有網點將被設置。我認爲這是相關的:load nib in view subclass

順便說一句,如果你定義的自定義筆尖爲您的細胞,有以下方法:registerNib(_:forCellReuseIdentifier:)

2

你並不需要在代碼中註冊您的細胞。

已正確設置單元格的標識,但是這是不夠的。除此之外,您還需要爲您的單元格打開Identity Inspector,並將單元格的類別設置爲UncheckedStoreTableViewCell。這裏是一個圖像顯示你在哪裏,你應該設置:

enter image description here

如果沒有這一步的Xcode將不能夠正確的小區標識與您的自定義單元格關聯,因爲它不知道呢!

+0

我做到了這一點。相同的錯誤 – Arti

+0

這是不可能的。確保你正確輸入了類名。你能上傳你的項目嗎?從你描述的症狀中,細胞得到出隊就好 - 問題是它的類是UITableViewCell,而不是你的自定義類。 –

+0

只有當我更改我的'tableView'內容從靜態到動態原型時纔有用。然後所有工作正常 – Arti