簡體   English   中英

如何通過Storyboard向導航欄添加后退按鈕?

[英]How do I add a Back Button to the Navigation Bar through Storyboard?

我現在非常困惑。 我在網上到處都看到了添加自定義后退按鈕的教程,但我似乎無法獲得默認的按鈕。

在我的MainViewController中,我有performSegueWithIdentifier(...)然后在另一端,我希望導航欄在左側有后退按鈕。 如何實現這一目標? 我似乎無法在線找到任何教程。 我嘗試過使用UINavigationController,每當我將故事板中的“導航項目”拖到導航欄時,我的標題就會被替換,但仍然沒有后退按鈕。

如何添加默認后退按鈕?

正如您在問題中所述: “我嘗試過使用UINavigationController,每當我將故事板中的'導航項目'拖到導航欄時,我的標題就會被替換,但仍然沒有后退按鈕。”

如果您將“導航項目”拖動到導航欄上,您將獲得您所描述的行為 - 您的“導航項目”將用作標題 ,而不是按鈕 要在故事板中向導航欄添加自定義后退按鈕,而不是向導航欄添加“導航項”,則需要添加“欄按鈕項”。

默認后退按鈕是...默認:)。 我會給你一個簡單的例子。 使用單個視圖創建新項目。 進入故事板,單擊單視圖控制器,然后轉到菜單中的編輯器 - >嵌入 - >導航控制器。 您現在將看到2個視圖控制器 - 一個是導航控制器,第二個是原始視圖控制器。 您會注意到導航控制器現在是應用程序的初始視圖,並且將有一條連接segue的線,表示視圖控制器是導航控制器的根視圖控制器。 然后在原始View Controller旁邊添加另一個UIViewController(通過拖放)。 現在,您將擁有3個視圖控制器,導航控制器,原始視圖控制器和新的視圖控制器。 在原始視圖控制器的左上角添加UIButton。 然后控制從按鈕拖動到新視圖控制器並選擇show segue。 如果您現在嘗試在模擬器中運行應用程序,您將首先看到原始視圖控制器。 點擊按鈕,您將看到帶有后退按鈕的新視圖控制器! 你甚至不用嘗試就會得到后退按鈕 - 因為它是默認的。

編輯

根據評論,目標是在用戶登錄時直接進入MainViewController,但如果用戶未登錄則轉到LogInViewController。

通過轉到大綱,選擇segue,轉到身份檢查器並為其指定標識符,將來自LogInViewController的push segue提供給MainViewController標識符。 在LogInViewController的ViewDidAppear中檢查用戶是否已登錄。如果是,則執行segue。 這將在MainViewController上為LogInView控制器提供一個后退按鈕。

在我的應用程序中,我做的事情略有不同。

替代方案:我將LogInViewController作為應用程序的初始View Controller,但不要將其嵌入到UINavigationController中。 然后我將MainViewController添加到故事板並將其嵌入導航控制器中。 我建議將它嵌入導航控制器,以防你想要顯示其他視圖並有一個MainViewController的后退按鈕。 將UIButton添加到LogInViewController並控制現在從它拖動到導航控制器。 選擇當前的模態segue。 在故事板的輪廓中選擇segue,然后在屬性檢查器中為其命名,如“present MainViewController”。 在LogInViewController的ViewDidAppear方法中,檢查用戶是否已登錄,如果是,則調用[self performSegueWithIdentifier:@"present MainViewController" sender:nil]; 如果用戶已登錄,則會顯示MainViewController,但不會顯示。 MainViewController中沒有后退按鈕,因為它是以模態方式呈現的導航控制器的根視圖控制器。 如果您希望左上角按鈕是一個將用戶注銷的按鈕,則可以將UIBarButton添加到MainViewController的左側。 現在轉到LogInViewController代碼並添加- (IBAction) nameOfUnwindSegue : (UIStoryboardSegue *) segue{}返回故事板並控制從此欄按鈕拖動到故事板中View Controller頂部的退出圖標。 選擇nameOfUnwindSegue(您可以根據需要命名)。 這會創建一個解除視圖控制器的展開segue。 您可以通過在storyboard中單擊它來獲取標識符,轉到屬性檢查器,並為其指定標識符“在MainViewController中的prepareForSegue方法中,您可以檢查segue.identifier是否等於標識符,如果是,請調用注銷方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM