2012-09-05 28 views
0

我正在構建一個iOS應用程序,並試圖找出提供必要屏幕的最佳方法。第一次用戶打開應用時,處理顯示登錄屏幕的最佳方式是什麼?

的應用程序是一個基於選項卡的應用程序,但使用TabBar和它直到用戶已登錄過的孩子應該是不可見的。

目前,該應用程序代理設置tabbarcontroller作爲根視圖控制器時application:didFinishLaunchingWithOptions是調用,然後如果需要,則標籤欄控制器中的第一個控制器將在視圖控制器中顯示標誌。

我使用這種方法的問題是,標籤欄中的第一個視圖控制器非常繁忙。它向外部API提出了一些請求,其中一些首先需要有效的會話令牌。

除非有人能提出更好的解決方案,否則我想要做的是檢查application:didFinishLaunchingWithOptions是否有有效的會話ID。如果有,請將tabBarController設置爲rootViewController(如果沒有),請將控制器中的登錄設置爲根視圖控制器。

任何人都可以看到這個想法的任何陷阱?

回答

1

使用NSUserDefault存儲第一次將爲true的bool值,並且登錄屏幕將與make bool值一起顯示爲false。所以,第二次登錄scrren不會出現

在申請加入本中:didFinishLaunchingWithOptions方法:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"FirstTime"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

現在

if([[NSUserDefaults standardUserDefaults] boolForKey:@"FirstTime"] == YES) 
{ 
    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"FirstTime"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
    //login screen 
} 
0

我用我的應用程序兩種方法,你以前做的第一個所描述的是最好的一個,因爲你不需要搞亂更改視圖控制器層次結構。你真的應該有一個布爾值存儲在NSUserDefaults和另一個布爾值在你的第一個視圖控制器。檢查tabbar的第一個視圖控制器的viewDidLoad方法中的userDefault bool值,以查看用戶是否已通過身份驗證(如果不是),請將第一個視圖控制器的布爾值設置爲適當的值,並且不要執行需要通過第三方API執行的操作,進行身份驗證,將bool設置爲適當的值並返回到第三方API。

+0

這就是我現在要做的。這不是最好的方法,但API請求實際上只需要做一次,所以從viewDidLoad調用它們是理想的。 viewDidAppear太頻繁了。 – bodacious

+0

... viewDidLoad僅被調用一次,並且它顯示SignInScreen – bodacious

+0

我的意思是檢查您是否應該在viewDidAppear方法中進行這些API調用,創建一個bool值,指示您是否已經提出了這些請求並僅檢查其每次顯示屏幕都會顯示一個值,每次屏幕顯示時都沒有任何工作量 – Eugene

相關問題