FMDBで簡単写真アルバムを作ろう Part.8 ~【iPhone】TableViewの画面遷移、異なるView間での値の受け渡し~

前回:FMDBで簡単写真アルバムを作ろう Part.7 ~【iPhone】SQLiteのデータを取り出してTableViewに表示~

簡単写真アルバムのソースコードGitHubからどうぞ
ー>https://github.com/ics-hiro/SelfPhotoLibrary

TableViewで画面遷移 didSelectRowAtIndexPath

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // セルの選択を解除する
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    
    for (int i = 0; i < titleArry.count; i++) {
        if (indexPath.row == i) {
            PhotoViewController *bvc = [[PhotoViewController alloc] initWithNibName:@"PhotoViewController" bundle:nil];
            bvc.row_num = i; // どの行を選んだのか、次のViewControllerに値を受け渡ししている。
            [self.navigationController pushViewController:bvc animated:YES];
        }
    }    
}

TableViewのセルがタップされたときに呼ばれるのがdidSelectRowAtIndexPath

セルが選択されたままの状態になってしまうことを防ぐため、「[tableView deselectRowAtIndexPath:indexPath animated:YES];」を実装して選択を解除する。


TableViewの行数はタイトルの数と一致するので、for構文を使いtitleArryの要素数だけforループで回す。
その際、if(indexPath.row == i)をネストし、bvc.row_num = i;を書くことで、
タップされた行番号と一致する整数をPhotoViewControllerのrow_numに受け渡しています。

このrow_numの値に応じて、PhotoViewControllerではタイトルと写真の表示を判別しています。

どうしてこのようにrow_numに値を代入して、PhotoViewControllerに値を受け渡せるのかというと、
アクセサを通しているからです。

アクセサメソッドを用いて、異なるView間での値の受け渡し

アクセサメソッドについては、「Objective-C プログラミング言語」の57ページに書かれているので、目を通してください。

今から話すのは、「@property」というやつについてです。

PhotoViewController.hを見てみると、

#import <UIKit/UIKit.h>

@interface PhotoViewController : UIViewController 
@property (nonatomic,assign) NSInteger row_num; //<-これのことです。
@end

そして、PhotoViewController.m@synthesizeしています。

@implementation PhotoViewController
{
    @private
    NSMutableArray *titleArry;
    NSMutableArray *contentsArry;
}
@synthesize row_num; //<-これのことです

@propertyと@synthesizeを使うことで、ゲッターとセッターを自動的に生成しています。

画面遷移のときに、bvc.row_num = i; と書いていたのは、セッターです。
これはドット演算子によるプロパティへのアクセスです。

[bvc setRow_num:i];という表現を簡略化した書き方がbvc.row_num = i;です。

ちなみに、
ドット演算子は、id型の変数には適用できない点に注意してくださいね。


簡単写真アルバムアプリ記事一覧
FMDBで簡単写真アルバムを作ろう Part.1 ~メモが書ける写真アルバムをつくる~
FMDBで簡単写真アルバムを作ろう Part.2 ~Xcode4.3,SingleViewApplication,FMDB準備~
FMDBで簡単写真アルバムを作ろう Part.3 ~必要なファイルを追加して整理しよう~
FMDBで簡単写真アルバムを作ろう Part.4 ~NavigationBarと画面遷移~
FMDBで簡単写真アルバムを作ろう Part.5 ~【iPhone】SQLiteのデータを出し入れするためのクラスをつくる~
FMDBで簡単写真アルバムを作ろう Part.6 ~【iPhone】UITextField,UIActionSheet,UIImagePickerControllerとメモ、写真の保存~
FMDBで簡単写真アルバムを作ろう Part.7 ~【iPhone】SQLiteのデータを取り出してTableViewに表示~
FMDBで簡単写真アルバムを作ろう Part.8 ~【iPhone】TableViewの画面遷移、異なるView間での値の受け渡し~
FMDBで簡単写真アルバムを作ろう Part.9 ~【iPhone】TableViewのセルを削除、commitEditingStyle ~
FMDBで簡単写真アルバムを作ろう 最終章 ~簡単写真アルバムの完成~


======================
当ブログ管理人のツイッターこちら
◎フォローしてくださると泣いて喜びます!ツイッター上で当ブログの質問などにもできるだけお答えしますし、役に立つiPhoneアプリ開発情報もつぶやきます。個人的なご依頼(たとえば、プログラミングの家庭教師、Skypeレッスンをしてくれないか、iPhoneアプリ開発の勉強会ってやってるの、とかですね)でもかまいません。
スカイプレッスンについて
開発をしているとその都度ぶつかる問題があると思いますが、検索で調べてもなかなかわからない、あるいは調べても非常に時間がかかる場合があると思います。開発者のみなさんもお忙しいと思いますので、私のレッスンを受けながら開発を進めていただけると、大幅にお時間を短縮できます。加えて、iPhoneアプリ開発の基礎、応用が身につき、今後の開発もスムーズに進められます

お問い合わせはツイッター、またはhiyoshimarukoアットマークgmail.comまでお願いします。(アットマークを@にしてください)お待ちしております!