iPhone uinavigation - 从页面跳转

时间:2010-01-20 12:28:35

标签: iphone xcode uinavigationcontroller

我是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 个答案:

答案 0 :(得分:1)

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

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

或者你可以在navigationController的root viewController中监听viewDidAppear,只有在root再次出现后才推送新的viewController。你可能需要使用一些BOOL来在根出现时不总是出现新闻视图控制器。希望这是有道理的。