2017-04-06 11 views
-1

同じCollectionviewcellに2つのtableviewがあります。私は、アプリケーションを実行すると、それはテーブルビューのcellforrowatindexpathにクラッシュし、言う:「致命的なエラー:オプションの値をアンラップしながら、予想外にnilを見つけ、」これは、tableviewのcellforrowatindexpathでクラッシュする: "致命的なエラー:予期せず、オプション値をアンラッピングしている間にnilが見つかりました"

私のコードのいくつかの下に見つけてください -

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> 
UITableViewCell { 

let cell = collectionView.dequeueReusableCell(withReuseIdentifier:  
reuseIdentifier, for: indexPathOfCollectionView as IndexPath) as! 
MyCustomCollectionViewCell 

if(tableView == cell.graphTableView){ 

let cell:CustomGraphTableViewCell = 
tableView.dequeueReusableCell(withIdentifier: "CustomGraphTableViewCell") as!  
CustomGraphTableViewCell 

return cell 
    } 
    else 
    { 
     let cell:MyCustomTableViewCell = 
tableView.dequeueReusableCell(withIdentifier: "MyCustomTableViewCell") as! 
MyCustomTableViewCell 
     cell.nameLabel.text = namesArray[indexPath.row] 
     return cell 

    } 
} 

缶だれでもしてください解決策を提案する。なぜそれが起こっているのでしょうか、同じものに対する解決策は何でしょうか?テーブルビューUICollectionViewCell

+2

あなたがで 'CollectionViewCell''をデキューすることはできませんがTableView 'cellForRowAt'メソッド。 –

+0

ここで強制的にアンラップしてください!あなたのすべてのセルをチェックしてください。なぜなら、今度はその無限 –

+0

@NiravDです。そこにコレクションビューのセルを宣言しなければ、どのようにテーブルビューにアクセスできますか? –

答えて

2

は動作しません、UICollectionViewCellUICollectionReusableViewUITableViewCellから継承された別のクラスがUICollectionViewCell異なるクラスであり、それはUIViewNSCodingUIGestureRecognizerDelegateから継承されているので、ここでは、あなただけのUITableViewのセルを使用する必要がありますあなたのテーブルビューのために。それ以外の場合はクラッシュします。あなたのテーブルビューのデリゲートメソッドは、いくつかの値ではなく返す

が、nullまたは0の場合、テーブルビューのデータソースメソッドが実行されます、それはいくつかの値を持っているとき、あなたのテーブルビューのデリゲートメソッド方法上記

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> 
UITableViewCell 

は今、実行を開始することを意味し見つかったときに上記の文が壊れてしまいます。

let cell = collectionView.dequeueReusableCell(withReuseIdentifier:  
reuseIdentifier, for: indexPathOfCollectionView as IndexPath) as! 
MyCustomCollectionViewCell 

上記の文は壊れてしまいます。

これだけcellforRowデータソース法の下で、この文を

let cell:MyCustomTableViewCell = 
tableView.dequeueReusableCell(withIdentifier: "MyCustomTableViewCell") as! 
MyCustomTableViewCell 
     cell.nameLabel.text = namesArray[indexPath.row] 
     return cell 

を入れて、それに応じて動作します。

おかげ

+0

ありがとうAbhishek!はい、私はcellforrowatindexpathからcollectionviewcellオブジェクトを削除し、チェックのためにtableviewにタグを割り当てて、今はうまく動作しています:) –

+1

グッド、:)私の提案があなたのために働いていたら、ハッピーコーディング、 ) –

0

このライン

cell.nameLabel.text = namesArray[indexPath.row] 

cell.nameLabelは常に最初に、文字列値を受け入れ、このような文字列値に変換されて確認してください。

cell.nameLabel.text = namesArray[indexPath.row] as NSString