いくつかの方法があるため、ほとんどの場合、さまざまなパターンで自分でこれを行います。次のように、アプリ デリゲートでナビゲーション コントローラーを設定できます。
self.viewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
self.navigationController = [[ UINavigationController alloc ] initWithRootViewController:self.viewController ];
self.window.rootViewController = self.navigationController;
[self.window makeKeyAndVisible];
次に、新しい VC を提示したい場合は、次のようにします。
OtherViewController *ovc = [[ OtherViewController alloc ] initWithNibName:@"OtherViewController" bundle:nil ];
[ self.navigationController pushViewController:ovc animated:YES ];
戻るには、次のようにします。
[ self.navigationController popViewControllerAnimated:YES ];
コールバックに関する限り、これを行う 1 つの方法は、プロジェクトのどこかに次のようなプロトコルを作成することです。
@protocol AbstractViewControllerDelegate <NSObject>
@required
- (void)abstractViewControllerDone;
@end
次に、コールバックをデリゲート aka でトリガーする各ビュー コントローラーを作成します。
@interface OtherViewController : UIViewController <AbstractViewControllerDelegate>
@property (nonatomic, assign) id<AbstractViewControllerDelegate> delegate;
@end
最後に、新しい VC を提示するときに、それをデリゲートとして割り当てます。
OtherViewController *ovc = [[ OtherViewController alloc ] initWithNibName:@"OtherViewController" bundle:nil ];
ovc.delegate = self;
[ self.navigationController pushViewController:ovc animated:YES ];
次に、ovcを閉じるときに、この呼び出しを行います
[self.delegate abstractViewControllerDone];
[ self.navigationController popViewControllerAnimated:YES ];
そして、作成したプロトコルに準拠する rootVC では、次のメソッドに入力するだけです。
-(void) abstractViewControllerDone {
}
あなたが電話をかけたところです。これには多くのセットアップが必要ですが、他のオプションには NSNotifications とブロックの調査が含まれており、何をしているかによってはより簡単になります。