2017-06-22 7 views
0

私はセルを前もって知っているメニューを作っています。したがって、コード内に各セルUICollectionViewCell()を作成します。それUITableViewで動作するように使用していますが、UICollectionViewで、それはcellForItemAtにエラーを与える:UICollectionView - cellForItemAtで返されるUICollectionViewCellのリスト

はreuseIdentifierを持っていない - 細​​胞が 呼び出すことによって取得する必要があります -

OK]をdequeueReusableCellWithReuseIdentifier:forIndexPath:を、私は作成したとき各UICollectionViewCell(カスタムスーパーセル)。セル識別子が必要ですが、問題ありません。しかし、私はまたIndexPathが欲しいです。

質問は次のとおりです。 UICollectionViewCellを先に作成するにはどうすればよいですか?

ご理解いただけますようお願いいたします。

答えて

0

コレクションビューでは、 ではなく、ビューを常にデキューする必要があります。コードで明示的に作成する必要があります。ビューのデキューには2つの方法があります。

  • コレクションビュー内の項目のためのセルを取得するために dequeueReusableCell(withReuseIdentifier:for:) を使用してください。

  • レイアウトオブジェクトによって要求された補助的なビューを取得するために dequeueReusableSupplementaryView(ofKind:withReuseIdentifier:for:) メソッドを使用します。あなたはこれらのメソッドのいずれかを呼び出す前

、あなたは1つがすでに が存在しない場合は、対応するビューを作成する方法を収集 ビューを伝える必要があります。このためには、コレクションビューの というクラスまたはnibファイルを登録する必要があります。たとえば、セルを登録する場合は、 register(_:forCellWithReuseIdentifier:)または register(_:forCellWithReuseIdentifier:)メソッドを使用します。 登録プロセスの一部として、 を識別する再使用識別子をビューの目的に指定します。これは後でビューをデキューするときに使用するのと同じ文字列です( )。あなたが方法dequeueReusableCell(withReuseIdentifier:for:)にあなたの再利用識別子ですとindexpathを渡すことによって、細胞をデキューする必要がcellForItem(at:)デリゲートメソッドで

、返されるオブジェクトは、あなたのセルになります。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    // reference to your cell 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) 
    return cell 
} 

あなたがstroyboards使用している場合は、ここで image

再利用識別子を設定し、コレクションビューを使用する方法より多くの情報を見つけることができますdequeueReusableCell(withReuseIdentifier:for:)方法

Hereにそれを渡す必要があります。

関連する問題