我对 UINavigationController 有疑问。它关于客户端或服务器端注销。
服务器端注销的想法是这样的,每 15 秒调用一个函数来检查应用程序是否仍然登录。如果不是这样,则跳转到 LoginViewController。
注销也可以从应用程序本身发生。它执行模拟代码。
有三个相关的控制器,LoginViewController 是我们想要结束的地方,SignOutController 是“退出”按钮所在的位置和 MainViewController。
以下是相关的代码部分。
首先, UINavigationController 像这样分配:
- (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;
}
当按下“退出”按钮或应用程序发现服务器已强制注销时,将执行此代码(相同的代码,不同的功能):
LoginViewController *loginView = [[LoginViewController alloc]initWithNibName:@"LoginViewController" bundle:nil];
[self.navigationController pushViewController:loginView animated:YES];
[loginView release];
如果它是服务器端注销,它只是重新加载 MainViewController,每 15 秒你会看到 MainViewController 滑入的动画。它从那里进入一个循环,每 15 秒重新加载一次。
如果您单击“退出”按钮,它将跳转到 MainViewController 而不是 LoginViewController 并开始上述相同的循环。
PS我已经检查过任何importend变量是否为零,并且我已经检查过初始化代码是否实际执行。
编辑:我想我没有提到这一点。我的应用程序 99% 的时间都可以正常工作。偶尔会发生这种情况,退出按钮不起作用,我开始这个循环。通常它工作正常。