2017-08-17 5 views
1

をクラッシュします。これは、コレクションビューの設定が正しく行われたことを示しています。 しかし、私は(時:indexPath)collectionView.cellForItemを使用する場合、私は、セルの割り当てcollectionView.cellForItemは私がfunciton呼び出しでcollectionView.cellForItemを使用してい

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { 

    let cell = collectionView.cellForItem(at: indexPath) as! PlaybookPlayCell // CRASH ON THIS LINE 

    ... 
    ... 

    return CGSize(width: ...., height: ......) 
}  

にクラッシュを取得する関数呼び出しsizeForItemAtは、いくつかの入力を取得するために素晴らしいことです。 ありがとう

+1

おそらく、そのインデックスパスのセルが 'PlaybookPlayCell'ではないことを意味します。キャストが失敗した場合、強制キャスト 'as! 'はクラッシュします。 –

+0

@KaneCheshireと合意したところでは、デバッガからのクラッシュもここで言及しました。 –

+0

plzはコレクションを共有しますすべてのデリゲートとデータソースのメソッドを表示 –

答えて

0

コレクションビュー(collectionView.cellForRaw(at: indexPath))の初期化前にcollectionView.cellForItem(at: indexPath)が呼び出されるため、常にnilになります。両方のブレークポイントを設定すると、表示されます。

0

初心者の方は、アンラップオプションを強制しないでください。アプリが予期せずクラッシュする可能性があります。

let cell = collectionView.cellForItem(at: indexPath) as! PlaybookPlayCell // CRASH ON THIS LINE 

を置き換えます。次に

guard let cell = collectionView.cellForItem(at: indexPath) as? PlaybookPlayCell else { 
    // This wasn't expected 
    // return something 
} 

あなたがあなたの問題をデバッグするために何かを追加することができますあなたの '他の' 節の内部。例えば

「予期しない」行に進みます。無名ですか?それは別のタイプですか?それはあなたの問題をさらに深めるでしょう。

関連する問題