ApplicationWillEnterForeground的不一致行为

时间:2011-03-17 04:07:27

标签: iphone

我的应用程序有密码验证。我的应用是基于窗口的。我有五个视图:MyApplicationAppDelegateMainViewControllerHelpViewControllerSettingViewControllerErrorViewController

当应用程序启动时,我导航到MainViewController。工具栏上有两个按钮,用于帮助和设置,指向各个页面。现在,我在MyApplicationAppDelegate中编写了以下代码:

- (void)applicationWillEnterForegroundUIApplication *)application {

[self showMyView];

}


-(void)showMyView{
if (![Global timeSet]) {


if (errorviewFlag) {
if (![Global show]){
ErrorPageViewController *bViewController = [[[ErrorPageViewController alloc]
initWithNibName"ErrorPageViewController" bundle:[NSBundle mainBundle]] autorelease];

[self setError:bViewController];
self.error = bViewController;
//[window addSubview:[error view]];

[[self navigationController] pushViewController:bViewController animated: NO];
UIBarButtonItem *_backButton = [[UIBarButtonItem alloc] initWithTitle"Back" style:UIBarButtonItemStyleDone target:nil action:nil];
[self.navigationController setNavigationBarHidden:YES]; 
[self.navigationController setToolbarHidden:YES];

[_backButton release], _backButton = nil;
[window makeKeyAndVisible];
errorviewFlag=FALSE;
[Global setShow:TRUE];
}
}
}
}

现在,除第一次以外,所有时间都会调用此方法。

问题是这只能以所需的方式工作,即显示ErrorPage,当我从MainView最小化应用程序时。如果我从帮助或设置中最小化,它不会显示错误页面,而是显示没有导航控件的主页。为什么呢?

1 个答案:

答案 0 :(得分:0)

他能够找到答案。我使用NSNotificationcenter和didEnterBackground。我在除MainView之外的所有其他视图中使用了它。在我使用的didEnterBackground方法中 [self.navigationController popViewControllerAnimated:NO];

当应用程序被缩小时,这迫使所有其他视图进入MainView,这解决了问题。