既に作成されたカスタム UIViewController クラス (AAA と言う) から継承した UIViewController サブクラス (BBB と言う) があります。BBB クラスには UITableView があり、ユーザーが UITableView の任意のセルをタップすると、別の UIViewController クラス (CCC と言います) をプッシュしたいと思います。
ということで、BBBのtableView: didSelectRowAtIndexPath:
方法でCCCコントローラーをプッシュしてみました。
私のコードは、
CCC *ccc = [[CCC alloc] init];
[self.navigationController pushViewController:ccc animated:YES];
[ccc release];
セルをタップしても何も起こらないので、次のコードで BBB クラスのナビゲーション コントローラを確認しました。
if (self.navigationController == nil)
{
NSLog(@"Navigation controller is nil");
}
メッセージは正常に出力されました:) それで、ナビゲーションコントローラーに何かを割り当てようとしましたが、運が悪かったのですが、それは読み取り専用のプロパティです。
次に、rootviewcontroller として ccc を割り当ててローカル UINavigationController を作成し、そのローカル ナビゲーション コントローラーをプッシュしようとしました。「同じView Controllerインスタンスを複数回プッシュすることはサポートされていません」という例外がスローされます。
私の質問は、
ナビゲーション コントローラが AAA クラスで nil 値を取得する場所を見つけることは可能ですか? BBB クラスでナビゲーション コントローラーを nil として作成しませんでした。クラス AAA で「self.navigationController = nil」のようなステートメントがあるかどうかを確認します。しかし、そのようなものは何もありません。
CCC クラスをプッシュするにはどうすればよいですか?
ありがとう