2016-04-24 7 views
1

私はTableViewControllerとその内部に静的なセルを持っています。私は細胞の1つにクラスを与え、dequeueReusableCellWithIdentifierでそれを検出しようとしています。私は`識別子MyCellを持つセルをデキューできません。 '

enter image description here

enter image description here

enter image description here

enter image description here

class MyCell: UITableViewCell { 

} 
...使用しかし、私はこれを使用する場合には、

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

の 'viewDidLoad'で、' tableView.registerClass(MyCell.self、forCellReuseIdentifier: "MyCell") 'をしましたか?ちなみに、カスタムセル用のnibファイルを作成しましたか?もしそうなら、代わりに 'tableView.registerNib(nib:forCellReuseIdentifier:)'を呼び出す必要があります。 – ozgur

+0

Main.StoryBoardにあります。別のnibファイルを作成しませんでした。あなたのコードを私のviewDidLoadに追加しようとしました。今は同じ行でクラッシュしますが、もう少し時間がかかります(2秒間の読み込み中)、クラッシュします。:/何が問題なのでしょうか? – senty

+0

静的なtableViewを使用すると、静的なテーブルビューのセルをデキューする必要はありません。あなたのviewControllerにアウトレットを作ってください。それはそれです –

答えて

2

問題は、あなたは、あなたがセルのインスタンスをしたい場合はtableView:cellForRowAtIndexPath:

の外

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

} 

決してデック細胞の細胞を両端キューしようとしているということです使えるだけです

tableView.cellForRowAtIndexPath(indexPath) 

これで問題は解決します。

+0

'estimatedHeightForRowAtIndexPath'に' tableView.cellForRowAtIndexPath(indexPath) 'だけを書くべきですか?私は何をすべきか分からなかった。それをコンセントに接続することに問題はありますか?私は 'tableView:cellForRowAtIndexPath'の内部でチェックを行うことができませんでした。だから、私はこのアプローチを試みました。 – senty

+1

はい。 '' 'deque'''は、セルの作成時や再利用時に使用されます。セルの参照が必要な場合は、上記のメソッドを呼び出します。 – Varun

+0

ああ、説明を明確にするために、静的なセルの場合は、 'cellForRowAtIndexPath'を動的セルだけに使うべきではありません。代わりに@IBOutletアプローチを使用しました – senty

関連する問題