Ответ 1
Есть несколько способов, поэтому в основном вы делаете это самостоятельно с различными шаблонами. Вы можете настроить контроллер навигации в делегате приложения следующим образом:
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 ];
Что касается обратного вызова, один из способов сделать это - сделать такой протокол где-то в вашем проекте:
@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 и блоков, которые могут быть проще в зависимости от того, что вы делаете.