上位のクラスを取得し、その中にある画像のインデックス番号を取得する方法がわかりません
iPhoneアプリ作成中です。
一つ目のクラスにCollectionViewで画像を並べ(以降、このクラスはGazouクラスと呼びます)、
タップした画像ごとに別々のplistを呼び出させます。
そして、二つ目のクラスの中身であるtableViewで、セルのテキストとしてplistの中身を表示させようと
しています(以降、このクラスはListクラスと呼びます)。条件と手順は以下の通りです。
<条件>
・UIViewControllerのサブクラスとして、GazouクラスとListクラスを用意する
・画像(名前:photo01〜10)と、plist(名前:List01〜10)を用意する
・plistの中身は以下の通り
Rootのタイプ:Array
Itemのタイプ:Dictionary
Itemの中身のキー:文章
Itemの中身のValue:(各種文章)
・画像photo01〜10は、にコレクションビューで並べてある
・画像をタップするとListクラスに遷移するよう、Presenting Seguesで設定しておく
<手順>
・Gazouクラスにコレクションビューで並べた画像(例:photo01)をタップする
・Listクラスに遷移する(これ以降はListクラス内での処理)
・タップした画像のインデックス番号を取得し、plist(例:List01)を呼び出す
・最終的に、plistの中身である(各種文章)をTableViewのセルのテキストとして表示する
としたいと考えています。
そこで、
- (void)viewDidLoad{
[super viewDidLoad];
// Gazouクラスのインスタンスを取得する
NSUInteger idx = [[self.navigationController viewControllers] indexOfObject: self] - 1;
Gazou *masterVC = [[self.navigationController viewControllers] objectAtIndex: idx];
// タップした画像のインデックスを算出する
// detailItemの型はid型です。
// detailItemはList.hで「@property (strong, nonatomic) id detailItem;」で定義されています。
// photosはNSArray型です。
// photosはGazou.hで「@property (nonatomic, strong, readonly) NSArray *photos;」で定義されています。これのログを取ると、画像ファイル(photo01〜10)の名前が列挙されます。
NSUInteger nextImageIdx = [masterVC.photos[0] indexOfObject: self.detailItem];
NSString *st=[[NSString alloc] initWithFormat:@"List%lu",(unsigned long)nextImageIdx];
NSString* dataFile = [[NSBundle mainBundle]pathForResource:st
ofType:@"plist"];
arrayList = [NSArray arrayWithContentsOfFile:dataFile];
}
と書いてみたのですが、うまくいきません。nextImageIdxの値を取得するときに
トラブルがあるようです。
どんな画像をタップしてもnextImageIdxのログを取ると「1」しか出てきません。
本来はnextImageIdxには 01〜10のうち、タップした画像の名前の末尾の数字が入る予定です。
この原因は同じ行にある「self.detailItem」にあるようです。これのログを取ると、
なぜかNULLになります。しかし、その原因がわかりません。
どなたか原因がわかる方がいらっしゃったらご教示いただけないでしょうか。
以上、何卒よろしくお願いいたします。