2016-09-01 52 views
0

如下圖所示,我有一個TabBar控制器作爲我的根視圖控制器,並附帶了一些導航控制器。在我的VC1和VC2中,我有我想要的屏幕上的標籤欄和導航欄,但對於VC3,我不希望標籤欄。目前我只是隱藏和取消隱藏在視圖中的標籤欄會出現。但是,這提出了一些糟糕的用戶界面。我認爲會很棒的是,當我展示VC3時,它只是在保持導航欄的同時在當前屏幕上呈現「超越」。有可能這樣做嗎?我還希望演示文稿是從右到左的,就像一個賽格一樣(反對從底部展示)Segue to VC over TabBar

注意。我使用performSegueWithIdentifier去VC3

我已經看到了一些解決方案,我必須將rootVC設置爲普通視圖控制器(而不是我的情況下的登錄VC)。但是,我試圖避免這種情況,因爲如果用戶已經登錄,我不需要提供登錄。如果我始終將它作爲rootVC,那麼在查看tabBarVC之前,用戶將被迫加載並「首先查看」登錄VC。這將導致。除非有辦法擺脫它?

storyboard flow

+0

愛德華掛兄弟檢查我的回答關於已經在或不在 – user3182143

回答

1

第一種方式:PUSH 您可以通過從故事板使VC3的標誌隱藏推動下吧。

請參考下面的圖片:

enter image description here

方式二:PRESENT

設置VC3導航控制器和呈現來自VC1或VC2或的TabBar該導航控制器如以下的圖像:

enter image description here

+0

我試過第一種方式,並沒有像VC3顯示的那樣,標籤欄仍然存在一小段時間然後它隱藏。對於第二種方法,當我將VC1和VC2中的兩個箭頭連接到右側的NavVC時,該navVC自動帶有tabBar(帶推塞格)。所以我的VC 3仍然有一個標籤欄底部 – user172902

+0

第二種方式,你應該使用禮物....沒有推...我已經在答案中提到.... –

+0

這是否是工作? –

0

您可以創建一個新的窗口,th在它上面展示你的VC3,這將確保它在tabbar上,作爲交換製造新的導航控制器和假按鈕。但我寧願您在故事板hide tabbar on push選項,它給的TabBar隱藏着一個漂亮的動畫

關於第二個問題,最好的辦法是讓rootVC在故事板的TabBar控制器,並分開loginVC,在AppDelegate中,檢查用戶是否登錄,並將rootVC設置爲loginVC或tabbar控制器

+0

你介意提供一些示例代碼:「你可以創建一個新窗口,然後展示你的VC3,這將確保它在tabbar上,作爲交換製作新的導航控制器和假背按鈕」我試過類似的東西,但VC是從屏幕底部呈現的。我不確定如何以編程方式爲該VC添加導航欄。謝謝 – user172902

+0

我想你已經試過了,那麼你就知道該怎麼做了,只需稍微調整一下,而不是展示VC遠近,你首先展示一個不可見的VC(沒有動畫),然後推到VC3,我只有這樣做之前,但沒有導航欄,仍然是我反對這樣做,而只是找到一種方法來隱藏你的tabbar,而不是這個過於複雜的方式 – Tj3n

0

第一次登錄時,必須將根視圖控制器設置爲登錄視圖控制器。然後在viedDidLoad方法中,必須設置已經登錄的檢查或者沒有。當第一次運行你的應用程序時,它沒有登錄,所以你可以去登錄頁面。一旦你登錄,你可以直接進入下一頁。你可以使用LoginViewController的viewDidLoad方法。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    BOOL loggedIn = [[NSUserDefaults standardUserDefaults] boolForKey:@"logged_in"]; 
    if(loggedIn) 
    { 
    NSLog(@"It has already logged in so go to next view"); 
    } 
} 

當你登錄成功設置布爾爲YES

- (IBAction)actionLoggin:(id)sender 
{ 
    if ([strUsername isEqualToString:@"xxxxxx"] && [strPassword isEqualToString:@"xxxxxx"]) //If it is correct 
    { 
     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"logged_in"]; 
    } 
} 

然後,當你退出時,布爾設置爲NO

- (IBAction)actionLoggin:(id)sender 
{ 
    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"logged_in"]; 
} 
+0

我試圖設置我的loginVC作爲我的rootVC和viewDidLoad的第一行,我檢查如果NSuserdefault中有任何用戶數據。如果存在,執行SegueBabVCv。但是,這是行不通的,因爲我無法在viewDidLoad中執行segue。除非他已註銷,否則我不希望用戶必須查看loginVC。 – user172902

0

1>標籤欄,你可以刪除的TabBar或者可以從故事板中隱藏Tabbar,但不要爲VC3採用單獨的導航控制器。

你可以保持VC3的導航欄項目標題值VC2或VC1導航欄標題,同時推動或呈現VC3.For,你必須用戶performseguewithidentifier並初始化VC3 nabber項標題值

2>嘿用戶已經登錄然後在appdelgate你可以改變根視圖controller.By發現用戶登錄或不從用戶默認。

您可以使用window.rootviewcontroller更改rootviewcontroller,並在做註銷時再次更改rootviewcontroller。