Я работаю над приложением для iPhone / iPad и пытаюсь переключать представления с помощью вызова функции, а не кнопки. Я видел много источников, переключающих представления, запускаемые кнопкой, но ничто не объясняет, как переключать представления, запускаемые функцией. Я пытался сделать это самостоятельно, но это не удалось. Вот код, который я пробовал:
- (void)viewDidLoad
{
[super viewDidLoad];
if (self.webview == nil) {
self.webview = [[MainViewController alloc] init];
/* webview initialized with storyboard */
if (self.view.superview == nil) {
[self.view insertSubview:self.webview.view atIndex:0];
}
[storyboard release];
}
}
Это viewDidLoad для viewController.m. Во-первых, он показывает WebView.
- (void)changeView {
self.normview = [[AlternateViewController alloc] init];
/* normview initialized with storyboard */
[UIView beginAnimations:@"View Flip" context:nil];
[UIView setAnimationDuration:0.75];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
[self.webview viewWillDisappear:YES];
[self.webview viewDidDisappear:YES];
[self.webview.view removeFromSuperview];
[self.view insertSubview:self.normview.view atIndex:0];
[self.normview viewWillAppear:YES];
[self.normview viewDidAppear:YES];
[UIView commitAnimations];
}
И когда вызывается эта функция changeView (в viewController.m), она должна изменить представление с webview на normview (на самом деле, оно работает нормально, когда тот же код запускается кнопкой). Но когда я вызываю эту функцию в другом файле (не viewController.m), например
ViewController *viewcontroller = [[ViewController alloc] init];
[viewcontroller changeView];
Это не работает. Кто-нибудь может дать подсказку, чтобы решить этот или альтернативный путь? (пс. Я тестирую на iPad.)