2016-04-24 48 views
1

我有一個TableViewController和其中的靜態單元格;我想給一個班級一個班級,並用dequeueReusableCellWithIdentifier進行檢測。我用..`無法使標識符MyCell出列單元格'

class MyCell: UITableViewCell { 

} 

enter image description here

enter image description here

enter image description here

enter image description here

但是,當我使用這個崩潰

override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    let cell = tableView.dequeueReusableCellWithIdentifier("MyCell", forIndexPath: indexPath) as! MyCell 
} 

unable to dequeue a cell with identifier MyCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'

+0

in'viewDidLoad',you'tableView.registerClass(MyCell.self,forCellReuseIdentifier:「MyCell」)'?順便說一句,你是否爲你的自定義單元創建了一個nib文件?如果你這樣做了,你可能需要調用'tableView.registerNib(nib:forCellReuseIdentifier :)'。 – ozgur

+0

它在Main.StoryBoard上。我沒有創建一個單獨的nib文件。我試着在我的viewDidLoad上添加你的代碼。現在它在同一行上崩潰,但需要多一點(多加載2秒)然後崩潰..:/可能是什麼問題? – senty

+0

你使用靜態tableView,你不必出隊靜態表視圖單元格。只是做一個出口到你的viewController,就是這樣 –

回答

2

的問題是,你正在嘗試雙端隊列細胞在

override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

} 

決不雙端隊列細胞tableView:cellForRowAtIndexPath:

外面如果你想在小區的一個實例,你可以只用

tableView.cellForRowAtIndexPath(indexPath) 

這會解決問題。

+0

所以我應該只在'estimatedHeightForRowAtIndexPath'中寫'tableView.cellForRowAtIndexPath(indexPath)'?我不明白該怎麼做。將它與插座連接是否存在問題?我無法在'tableView:cellForRowAtIndexPath'中進行檢查,這就是爲什麼我嘗試了這種方法.. – senty

+1

是的。在單元格被創建或重用時使用'''deque'''。如果你想要一個單元格的引用,只需調用上面的方法即可。 – Varun

+0

啊,爲了澄清起見,對於靜態單元,我不應該使用'cellForRowAtIndexPath',只能用於動態單元..我使用@IBOutlet方法 – senty

相關問題