2015-04-21 158 views
0

我已經添加了導航控制器到我的登錄屏幕。用戶登錄後,視圖將被重定向到另一個稱爲DetailVC的視圖控制器。如何刪除默認後退導航按鈕

如果用戶以前登錄過,用戶將自動導航到DetailVC。這部分工作完美。但是,導航控制器中的默認後退按鈕出現在DetailVC上。我如何刪除它?

DetailVC我將導航到其他視圖,導航後退按鈕應該從那個點開始顯示。我只希望它在DetailVC上消失。我怎樣才能做到這一點?

enter image description here

+0

你可以隱藏導航欄本身。 –

回答

3

這應該做的伎倆:

[self.navigationItem setHidesBackButton:YES]; 

要不然:

self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]; 
1

你可以調整導航欄中,但是這似乎是圍繞創造,而不是一個問題工作避免了這個問題。

這可能是更正確的應用程序分爲兩個部分:登錄和登錄

在你的應用程序代理負載我想創建登錄控制器作爲一個單獨的項目,你的DetailVC作爲一個單獨的項目。將DetailVC作爲UINavigationController的根控制器。

喜歡的東西:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 

    // Create login and logged in controllers as properties. 
    self.loginController = ... // Use storyboard or however you init this 
    self.detailVC = ...  // Use storyboard or however you init this 
    self.loggedInController = ... //UINavigationController with root as self.detailVC 

    // Check for logged in 
    if (self.loggedIn){ 
    [self switchToLoggedIn]; 
    } 
    else{ 
    [self switchToLogin]; 
    } 
} 

- (void) switchToLogin{ 
    self.window.rootViewController = self.loginController; 
    [self.window makeKeyAndVisible]; 
} 

- (void) switchToLoggedIn{ 
    self.window.rootViewController = self.loggedInController; 
    [self.window makeKeyAndVisible]; 
} 

在您的登錄代碼,你可以要求應用程序委託實例切換到登錄控制器一旦被認證和註銷切換到登錄控制器。

由於登錄控制器是一個UINavigationController,它將以無根後正確啓動。


另一個更簡單但相似的選項是從登錄中以模態方式在UINavigationController中呈現您的DetailVC。由於它是新堆棧的開始,它將沒有後退按鈕。要註銷,只需關閉控制器導航控制器即可。

1

到羅裏的答案的選擇,但與此類似,而不是推登錄完成時,新的視圖控制器,可以考慮改爲:

[self.navigationController setViewControllers:@[ myDetailVC ] animated:YES]; 

這將替換您的根視圖控制器(登陸)新的,因此不會有後退按鈕。