前回の続き。今回はUICollectionViewControllerを使ったUICollectionViewの使い方です。

サンプル: https://github.com/stack3/UICollectionViewSample

サンプルを起動してUICollectionViewControllerを選択してください。以下の様な画面が表示されます。

01

つまり前回と同じです。ただ今回はUICollectionViewControllerを使って実装しています。

STCollectionViewControllerSampleController

UICollectionViewControllerのSubclassを作ります。

@interface STCollectionViewControllerSampleController : UICollectionViewController

@end

UICollectionViewControllerは既にUICollectionViewDataSource,UICollectionViewDelegateを実装するように宣言されているので、ここではその宣言は不要です。

viewDidLoadでは、セルのクラスの登録のみを行います。また、UICollectionViewController#collectionViewでUICollectionViewへアクセスできます。

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    UINib *nib = [UINib nibWithNibName:@"STCustomCollectionViewCell" bundle:nil];
    [self.collectionView registerNib:nib forCellWithReuseIdentifier:@"CellId"];
}

self.collectionViewのdataSourceとdelegateにself(ViewController)を設定する必要はありません。

UICollectionViewDataSourceとUICollectionViewDelegateの実装は前回とほとんど同じなので割愛します。違いは前回はメンバ変数_collectionViewへアクセスしていた箇所が、self.collectionViewになるくらいです。

STCollectionViewControllerSampleController.xib

xibのレイアウトは以下の手順で作ります。

最初に配置されているViewを削除して、代わりにUICollectionViewを配置を配置します。

08

07

File’s OwnerのConnections Inspectorを選択。Outletsのviewを配置したUICollectionViewとひもづけます。

02

これで動作するはずです。

UICollectionViewControllerを使うか否か

UICollectionViewControllerを使うと、直接UICollectionViewを使うより若干コードが少なくなります。ただし、UICollectionViewと他のViewを1画面に配置したい時は、融通がきかないかもしれません。仕様の変更を考慮した場合、UICollectionViewを直接使ったほうが良いようにも思います。

自分は使わないかな・・・UITableViewControllerも使わないので。

その3へ続く