次のように、戻るボタンを追加する必要があります。
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
理想的には、NavigationController はアプリケーションのルートです。この場合、他のビューはそのサブビューであるため、Navigation Controller から完全に切り替えることはなく、表示される実際のビューを変更するだけです。
また、最初のビューを参照しようとする方法は、かなり面倒/混乱します。次のように変更する必要があります。
[appDelegate.navigationController topViewController];
また
[appDelegate.navigationController popToRootViewController];
正確なビュー階層がわからないため、どちらを使用すればよいかはわかりませんが、そのコードを最適化することを強くお勧めします。
おそらく、ナビゲーション コントローラーの [戻る] ボタンとその下の 2 つの行が異なることを行うことに注意してください。戻るボタンはビューを 1 つ戻しますが、popToRoot と topView はどちらも最初の viewController に戻ることを目的としています。
編集:戻るボタンのコードを実際に使用するコードに変更しました
Edit2:ここにもう少しスペースがあるからといって、階層構造をよりよく理解しようとすることができます。なんかこんな感じ?
Root View or Root View
-> Group View -> Group View
ABPeoplePicker View -> ABPeople Picker View
Root View
-> Group View
-> -> ABPeoplePicker
ABPeoplePicker が Group 内にネストされ、それがルート内にネストされていることを意味しますか? あなたが実際に持っているのは最初の行の2つのうちの1つであり、必要なのは2行目であるため、機能していないと思います。実際に見てみないとどれを持っているか分からないので、何を変更すればよいか正確には言えませんが、2行目の階層のようにずっと入れ子にしたい場合は、グループビューをプッシュする必要がありますルート ビュー コントローラー (ナビゲーション コントローラー) に追加した後、ピープル ピッカーをルート ビュー コントローラーに再度プッシュします。この後、戻るボタンとビューの切り替えが希望どおりに機能するはずです。