我有一个UINavigationController的问题。它关于客户端或服务器端注销。UINavigationController pushViewController stoppes工作
服务器端注销的想法是这样的,每15秒调用一个函数来检查应用程序是否仍然登录。如果不是这种情况,那么跳转到LoginViewController。
注销也可以从App本身发生。它执行相似的代码。
有三个相关的控制器,LoginViewController是我们想要结束的地方,SignOutController是'注销'按钮所在的位置和MainViewController。
以下是相关的代码部分。
首先,UINavigationController的被allcated这样的:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
splashScreenViewController_ = [[SplashScreenViewController alloc] initWithNibName:@"SplashScreenViewController" bundle:nil];
uiNav_ = [[UINavigationController alloc] initWithRootViewController:splashScreenViewController_];
uiNav_.navigationBar.barStyle = UIBarStyleBlackTranslucent;
uiNav_.navigationBarHidden = YES;
[window_ setRootViewController:uiNav_];
[window_ makeKeyAndVisible];
return YES;
}
当“登录out'-按钮被按下或应用程序计算出该服务器具有强制注销,该代码执行(相同的代码,不同势函数):
LoginViewController *loginView = [[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:nil];
[self.navigationController pushViewController:loginView animated:YES];
[loginView release];
如果它是一个Serverside集团注销它只是重新加载MainViewController,每隔15秒,你看到MainViewController动画滑动它在一个周期去从那里,每15秒重新加载。
如果你点击'Sign out'按钮,它会跳到MainViewController而不是LoginViewController,并启动上面描述的相同的循环。
P.S.我检查了是否有任何importend变量为零,并且我已经检查过initalisation代码是否被实际执行。
编辑:我想我没有提到。我的应用程序99%的时间工作。仅仅有一段时间,这种情况发生,注销按钮不起作用,我开始了这个循环。通常它工作正常。
定时器程序自动采场,当你不MainViewController了。如果NavigationController工作,它不会是一个问题。 当你按下注销按钮,它只是跳转到LoginViewController。我不明白那是不好的用户界面。我只是想建议注销按钮在另一个ViewController上,并且最终在MainView上。 我会测试你的想法。 – nickik 2013-04-06 18:43:54
当我说这是一个糟糕的用户界面是,这是一个有点akward的有登录查看我的意思压入堆栈,因为它滑入。通常登录与您提前到主应用程序的第一个视图,并当你注销你回到他们。 – Erpheus 2013-04-06 21:09:19