2010-01-20 61 views
2

我是iPhone编程的新手,并且遇到了UINavigation控件的问题。iPhone uinavigation - 从页面跳转

我有3个视图(主菜单,新闻和登录)。主菜单是我在根控制器中的基本视图,然后当用户单击主菜单中的按钮时,我将登录或新闻视图推入堆栈。但是,如果我在新闻界面上并想切换到登录视图,我希望弹出当前视图(将我带回主菜单),然后推入登录视图。然而,这并没有发生,我不知道为什么...

这里是我的AppDelegate代码:

@synthesize window; 
@synthesize rootController; 


- (void)applicationDidFinishLaunching:(UIApplication *)application {  

// Override point for customization after application launch 
[window addSubview:rootController.view]; 
[window makeKeyAndVisible]; 
} 


- (IBAction)loadLoginView 
{ 
[self loadMainMenuView]; 
LoginViewController *loginView = [[LoginViewController alloc] initWithNibName:@"LoginView" bundle:nil]; 
[rootController pushViewController:loginView animated:YES]; 
[loginView release]; 
} 

- (IBAction)loadNewsView 
{ 
[self loadMainMenuView]; 
NewsViewController *newsView = [[NewsViewController alloc] initWithNibName:@"NewsView" bundle:nil]; 
[rootController pushViewController:newsView animated:YES]; 
[newsView release]; 
} 

- (IBAction)loadMainMenuView 
{ 
[rootController popToRootViewControllerAnimated:YES]; 
} 

- (void)dealloc { 
[window release]; 
[rootController release]; 
[super dealloc]; 
} 

有人能看到我在做什么错?有没有更好的方法来管理? 谢谢!

回答

1

在导航控制器上执行两个动画viewController更改无法正常工作(这些未排队)。请尝试以下操作:

- (IBAction)loadNewsView { 
[self loadMainMenuView]; 
NewsViewController *newsView = [[NewsViewController alloc] initWithNibName:@"NewsView"  bundle:nil]; 
[rootController pushViewController:newsView animated:YES]; 
[newsView release]; 
} 

或者你可以听viewDidAppear在navigationController的根的viewController,只有推新的viewController一旦根已再次出现。您可能需要使用一些BOOL,以便在出现root时不总是显示新闻viewcontroller。希望这是有道理的。

+0

谢谢菲利克斯, 我试图删除popallviews代码的动画和工作...然而,我没有过渡效果。 我现在试图查看我是否可以在没有NavigationController的情况下执行此操作,并仅手动管理视图。 再次感谢! – 2010-01-20 15:58:55