2017-04-14 3 views
0

私はコレクションビューを含むビューコントローラを持っています。 コレクションビューのデリゲートとデータソースはカスタムクラスの1つで、そのクラスからコレクションビュー自体にアクセスすることはできません。このクラスには、UICollectionViewFlowLayout、UICollectionViewDelegateFlowLayout、UICollectionViewDataSourceが含まれます。デリゲート&データソースクラスからコレクションビューにアクセスするにはどうすればよいですか?

self.collectionViewを入力してコレクションビューにアクセスしようとしましたが、「致命的なエラー:予期せぬことにオプション値(lldb)をアンラップしていました。

コレクションビューを含むView Controllerを指し示す静的let変数を設定しようとしましたが、機能しませんでした。

+1

あなたは 'collectionViewにあなたのコレクションビューをリンクしている、あなたのViewControllerにデリゲートとデータソースの方法を保つが、他のクラスでそれらのすべてのデータを保持し、ストーリーボードでは、あなたのViewControllerデリゲートメソッド – Tj3n

+0

でそれを返す必要がありますあなたは言いましたか?この変数は '@ IBOutlet'としてマークされなければなりません。 –

答えて

0

デリゲートとデータソースはデータプロバイダです。それらを独自のクラスに抽出することは非常に良いアイデアです(オブジェクト指向設計)。しかし、これらのクラスはプロトコルのapi以上のものを実装すべきではありません。各プロトコル関数は、最初のパラメータとして参照を与えることによって、コレクションビューへのアクセスを提供します。

func numberOfSections(in: UICollectionView) 
関連する問題