我有一個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