Picasaアルバムのように、アルバム一覧をサムネイル画像で表示したい
-利用したライブラリ
Three20 1.0.4
Three20 の TTThumbsViewController を使えば、写真一覧をサムネイルで表示→任意の写真をクリック→写真を表示する は、簡単に実装できる。しかし、ここでは、「写真一覧」の前に、Picasaアルバム のようなアルバム一覧のサムネイルを表示したい。
-実装したい処理の手順
--before--
1
写真一覧をサムネイルで表示
2
任意の写真をクリック
3
写真の表示
--after--
1
アルバム一覧をサムネイルで表示
2
選択したアルバムが持つ写真をサムネイルで一覧表示
3
任意の写真をクリック
4
写真の表示
-------------------------------------
-Three20UI.xcodeproj でどんな実装をしているのか確認する
--任意の写真を選択したあとに呼び出されるメソッド
---メソッド名
- (void)thumbsTableViewCell:(TTThumbsTableViewCell*)cell didSelectPhoto:(id
---定義ファイル名
TTThumbsTableViewCellDelegate.h
--上記の関数を実装しているファイル名
TTThumbsViewController.m
- (void)thumbsTableViewCell:didSelectPhoto: メソッドはデリゲートメソッドなので、自分のメソッド内でこのメソッドをデリゲートすればいいのかなと考えたが、次の処理(写真一覧をサムネイルで表示する)では Three20 に処理を任せるので、superクラス(TTThumbsViewController)の処理も残しておきたい。というわけで、オーバーライドするのが正解。
-------------------------------------
-実装例
MyViewController.m
- (void)picasaWebDataSourceFetchAlbumCompleted:(PhotoSet *)dataSource{ MyThumbsViewController *thumbs = [[MyThumbsViewController alloc] initForPhotoSource:dataSource withPicasaWebDataSource:self.picasaDataSource]; [self.navigationController pushViewController:thumbs animated:YES]; // この後、Three20 の処理に移る }
MyThumbsViewController.m
- (void)thumbsTableViewCell:(TTThumbsTableViewCell*)cell didSelectPhoto:(id)photo { // 自分のメソッド内で thumbsTableViewCell:didSelectPhoto: をオーバーライドして処理を Three20 から自分の実装に処理を戻す NSInteger index = photo.index; // 選択したアルバムのインデックスを取得しておく [self.picasaDataSource fetchSelectedAlbum:index]; // Picasa Web Albums Data API の fetch 処理を呼び出す }
この後、TTThumbsViewController で初期化したオブジェクトを pushViewController: メソッドの引数に設定する。そして、選択したアルバムがもつ写真一覧をサムネイルで表示する処理を Three20 でやってもらう
MyThumbsViewController.m
- (void)picasaWebDataSourceFetchAlbumPhotosCompleted:(PhotoSet *)dataSource{ TTThumbsViewController *thumbs = [[TTThumbsViewController alloc] init]; thumbs.photoSource = dataSource; [self.navigationController pushViewController:thumbs animated:YES]; }