如何在视图控制器之间转换

时间:2009-10-03 11:39:26

标签: iphone

我已将代码放在App Delegate中,以便我可以从一个视图控制器转换到另一个视图控制器。

但是,当我按下按钮时,不会转换到我的SecondViewController。我应该怎么做呢?任何简单的方法来带来下一个视图控制器,(pushview控制器)......

这是我的代码:

SecondViewController *aSecondView = [[SecondViewController alloc] init];
[self setSecondViewController:aSecondView];
[aSecondView release];

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:2.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft 
                       forView:window
                         cache:YES];
[viewController.view removeFromSuperview];
[self.window addSubview:[secondViewController view]];
[UIView commitAnimations];

2 个答案:

答案 0 :(得分:1)

好吧,既然您没有使用内置函数来呈现视图控制器,则必须调用所有view*Appear:函数:

  • -viewWillAppear:
  • -viewDidAppear:
  • -viewWillDisappear:
  • -viewDidDisappear:
但是,我不确定这是否能解决这个问题。您可能希望使用presentModalViewController:animated:来推送新视图。如果它在逻辑上不是当前视图的子视图,则使用根视图推送第一个视图,然后当您想要转换时,关闭第一个视图并从(从未见过的)根视图中显示第二个视图。

答案 1 :(得分:1)

虽然您还没有发布更多代码,所以我无法确定,但是在您的应用代理中进行控制器转换会产生代码异味。由于您描述了一个启动转换的按钮,我的问题是,您为什么不在拥有按钮的视图控制器中使用导航控制器和/或以模态方式呈现第二个视图控制器?

明智地修改您的app委托 - 我主要只使用我的一次性全局任务,例如加载Core Data store / sqlite数据库等。