UINavigationController に問題があります。クライアントまたはサーバー側のログアウトに関するものです。
サーバー側のログアウトのアイデアはこれです。15 秒ごとに、アプリがまだログインしているかどうかを確認する関数が呼び出されます。そうでない場合は、LoginViewController にジャンプします。
ログアウトはアプリ自体から行うこともできます。simular コードを実行します。
関連する 3 つのコントローラーがあります。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 のアニメーションがスライド インします。そこから 1 サイクルで、15 秒ごとにリロードします。
「サインアウト」ボタンをクリックすると、LoginViewController ではなく MainViewController にジャンプし、上記と同じサイクルを開始します。
PS importend 変数が nil かどうかを確認し、初期化コードが実際に実行されることを確認しました。
編集:私はそれについて言及しなかったと思います。私のアプリは 99% の確率で動作します。たまにサインアウトボタンが機能せず、このサイクルが始まります。通常は正常に動作します。