Вот определение корневого контроллера-легенда
@ протокол RootViewControllerViewDelegate
- (void) toggleView: (UIViewController ) newController viewController: (UIViewController ) oldController;
@ конец
возможная реализация toggleView
-(void)toggleView:(UIViewController *)newController viewController:(UIViewController*)oldController {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
[UIView setAnimationTransition:([oldController.view superview] ? UIViewAnimationTransitionFlipFromLeft : UIViewAnimationTransitionFlipFromLeft) forView:self.view cache:YES];
[newController viewWillAppear:YES];
[oldController viewWillDisappear:YES];
[oldController.view removeFromSuperview];
[self.view addSubview:newController.view];
[oldController viewDidDisappear:YES];
[newController viewDidAppear:YES];
[UIView commitAnimations];
[oldController release];
}
Это проведет контроллеры представления, перевернув представление
Очевидно, что вы должны где-то создать новый RootViewController и начать с представления там (может быть делегатом приложения)
Теперь, если вы хотите, чтобы ViewController мог использовать RootViewController, он должен соответствовать протоколу, вы объявляете его в интерфейсе классов следующим образом:
@interface MyViewController : UIViewController <RootViewControllerDelegate> {
id delegate;
}@property(assign) id <RootViewControllerViewDelegate> delegate;
Теперь вы можете использовать метод делегатов, чтобы поменять представление на другое, если все правильно инициализировано. код для замены двух контроллеров может выглядеть следующим образом
NewViewController *viewController=...
//you can set up your viewControllers data here if you need to
//Since its probable that this view has that data it can just set it instead of
//delegating
viewController.delegate=delegate; //setting up the RootViewController reference
[delegate toggleView:viewController viewController:self];
запомните при обратном вызове toggleView, чтобы освободить старый ViewController, если вы не получите утечку, поскольку потеряете все ссылки на этот контроллер.