質問: [NSArray arrayWithContentsOfFile:dataFile]; } ``` と書いてみたのですが、うまくいきません。nextImageIdxの値を取得するときに トラブルがあるようです。 どんな画像をタップしてもnextImageIdxのログを取ると「1」しか出てきません。 本来はnextImageIdxには 01〜10のうち、タップした画像の名前の末尾の数字が入る予定です。 この原因は同じ行にある「self.detailItem」にあるようです。これのログを取ると、 なぜかNULLになります。しかし、その原因がわかりません。 どなたか原因がわかる方がいらっしゃったらご教示いただけないでしょうか。 以上、何卒よろしくお願いいたします。
回答: まず、ここのコメントにある改善案は受け入れた方が良さそうです。 その上で、あなたのコードについての疑問の一つについてお答えすると、 ``` // クラス1(Aisatuと名付けてあります)のインスタンスを取得する NSUInteger idx = [[self.navigationController viewControllers] indexOfObject: self] - 1; Aisatu *masterVC = [[self.navigationController viewControllers] objectAtIndex: idx]; ``` 上記処理の中で、"self"が表示中のViewController(2)だとすると、 この処理でクラス1のインスタンスを取得するためのidxを正しく取得するためには、 この処理の実行タイミングを2のViewControllerの画面遷移後にする必要があります。 上記処理を正しい位置に記述している場合、idxの値が1ならば1のAisatuクラスを含むviewControllerのスタックは下記のようになっていると考えられます。 > > NavigationContoroller > > -RootViewController (idxは0) > > -Aisatu (idxは1) > > -クラス2のViewController (idxは2) > > > つまり、Aisatuクラスの画面からどのような画像をタップして画面遷移をしても、クラス2のViewControllerのスタックされるインデックス(順番)は変わらないため、常にログに1が出てると考えられます。