2013-06-25 65 views
1

我正在開發一個iOS應用程序。該應用程序有兩個狀態:用戶登錄,用戶沒有登錄。iOS Storyboard切換視圖與不同tabbar

如果您初始化應用程序(用戶未記錄),則有兩個選項卡。然後,如果你願意,你可以登錄,應用程序必須顯示4個選項卡。如果關閉應用程序並重新啓動,應用程序必須顯示4個選項卡。

我使用用戶首選項來存儲憑據用戶以瞭解用戶是否已登錄,但我該如何實現它?

如何(使用故事板)我可以顯示帶有4個選項卡或2個選項卡的選項卡?

而且,如何在應用程序正在執行時(當您初始化應用程序並且您沒有登錄並且登錄時)將2tabs tabbar更改爲4tabs tabbar?

謝謝。請,如果你能舉出代碼的例子,我會很感激。

解決方案: 您必須創建三個故事板。例如:

init.storyboard 
logged.storyboard (with 4 tabs) 
nologged.storyboard (with 2 tabs) 

在init.storyboard就可以開始故事板你想

UIViewController *viewController; 

if(user is logged) 
    viewController = [[UIStoryboard storyboardWithName:@"Logged" bundle:NULL] instantiateViewControllerWithIdentifier:@"init_tab"]; 
else 
    viewController = [[UIStoryboard storyboardWithName:@"NoLogged" bundle:NULL] instantiateViewControllerWithIdentifier:@"init_tab"]; 

[self presentViewController:viewController animated:NO completion:nil]; 

然後,當你想顯示有4個選項卡或2個標籤的應用,你應該這樣做「推出」

UIViewController *vc = [[UIStoryboard storyboardWithName:@"Logged" bundle:NULL] instantiateViewControllerWithIdentifier:@"init_tab"]; 
[self presentViewController:vc animated:YES completion:^{}]; 

這個代碼是在nologged.storyboard

檢查控制器,我使用故事板上的標識符「init_tab」,所以如果你希望你可以在每個故事板的視圖中放置一個標識符。

+0

我有解決方案。如果有人想要解決方案,請在這裏寫下。 (解決方案很大) – jlmg5564

+0

我會對該解決方案感興趣 - 在此先感謝 – brainray

+1

我把解決方案智能標記 – jlmg5564

回答

0

我認爲這是你的代碼中的easyer,通常在故事板上做一切。將4個視圖放在標籤欄上。

然後,根據在如果用戶登錄或不隱藏或unihide方法programically顯示或不2次...

編輯:在你的viewdid負載的2次應view.hiden = YES; 然後在用戶登錄時的另一種方法make view.hiden = No;

它只是一個想法開始與

+0

帶有2個選項卡的tabbar顯示視圖A和B.帶有4個選項卡的tabbar顯示視圖A,C,D ,E – jlmg5564

0

所以,你會想修改的標籤欄的viewControllers財產。您可以選擇添加兩個新的視圖控制器,一旦您收到通知說用戶已登錄,或者默認爲4,如果用戶未登錄,則將其刪除。您可以檢入applicationDidFinishLaunching,然後用tabBarController self.window.rootViewController

+0

viewControllers默認是不可變的,所以你將不得不創建一個可變副本來添加/刪除項目 – mrosales

+0

mros,是的。並且你不能修改一個tabbarcontroller鏈接的tabbar(我使用storyboard和tabbarcontroller) – jlmg5564

+0

所以有一個方法稱爲setViewControllers:animated:在UITabBarController上 – mrosales