2015-04-01 90 views
4

我有兩個視圖控制器,第一個嵌入在導航控制器中。第一個視圖中的一個按鈕將第二個按鈕推到導航堆棧上。大。除了後退按鈕僅在第二個視圖完成動畫到窗口中時纔會出現。這將是罰款,除了該視圖的標題顯示馬上:NavigationController後退按鈕不會出現,直到加載視圖後

enter image description here

enter image description here

這產生了一個元素出現馬上和其他在後來才種持久性有機污染物一個奇怪的差異。任何方式讓後退按鈕立即出現?我正在使用自定義按鈕btw:

let backButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItemStyle.Plain, target: self, action: nil) 

navigationItem.backBarButtonItem = backButton 
+0

這裏需要一點信息。你如何執行轉換(segue掛在故事板/ performSegueWithIdentifier(_ :)'/'pushViewController(_:animated :))?)?你在哪裏(代碼中)設置'backBarButtonItem'?在我的簡短測試中,我只能得到您在'viewDidAppear(_ :)'中設置'leftBarButtonItem'時描述的行爲。 – Stuart 2015-04-01 19:25:28

+0

另外,你所描述的用戶界面在iOS中有些非慣用。在推送過渡之後,用戶通常期望看到帶有描述前一個屏幕的文本的向後箭頭。你的設置(在左邊有一個「取消」按鈕)看起來更像是一個模態表示。當然,我不知道應用程序UI的完整流程,但只是認爲它值得一提,以防萬一。 – Stuart 2015-04-01 19:33:42

+0

是的,我正在研究如何讓它更像是從底部向上滑動的模式,然後取消滑動向下。但是,爲了理解正常推送過渡發生了什麼,我試圖找出在此場景中不立即顯示的後退按鈕。至於我如何執行轉換,簡單的按鈕通過故事板延續到第二個視圖。我在第一個視圖控制器中創建了自定義後退按鈕,但即使使用默認按鈕,問題仍然存在,但無論出於何種原因,它都會稍微早一點開始淡入淡出 – 2015-04-01 19:43:37

回答

3

不知道更多的細節,我不確定你描述的行爲背後的原因。但是,我會嘗試並介紹如何設置這些類型的轉換。由於您正在使用故事板,因此非常簡單。

在您的故事板中,您將從嵌入導航控制器的視圖控制器開始,以及您想要轉換到的第二個視圖控制器。從你的第一個VC按鈕控制拖動到第二個VC場景,並選擇一個「顯示」動作segue,這將導致導航推送轉換 - 我認爲這是你配置故事板的方式。

您可以直接在故事板中更改後退按鈕標題。選擇第一個VC場景並從左側的文檔大綱中選擇其導航項目對象。在右側的屬性檢查器中,只需將「後退按鈕」字段更改爲您按下第二個VC時按鈕所要表達的內容即可。這將保持用戶期望的後退箭頭圖標。

如果你想使用推轉型,但顯示正常的前瞻性按鈕沒有箭頭,可以隱藏在你的第二個VC的viewDidLoad()後退按鈕:

navigationItem.hidesBackButton = true 

然後,回到你的故事板,拖在第二個VC的導航欄的左側出一個酒吧按鈕項目,並給它一個自定義標題等。

但是,您真正想要的此設置是模式轉換,並且這樣做很簡單在故事板中將您的segue類型更改爲「Present Modally」。這將在導航堆棧上方顯示第二個VC 以上,因此默認情況下不會顯示導航欄。而不是從對象面板拖出一個獨立的導航欄(它會給你一些麻煩,試圖讓它在狀態欄下擴展),將你的第二個VC嵌入到它自己的導航控制器中,它會隱式地添加一個導航欄。然後,您可以將一個酒吧按鈕項拖出到酒吧的左側,並通過展開順序將其鉤住,或使用IBAction方法並致電​​3210。

+0

這是一個解釋。我修復了我的故事板,現在它工作 – 2016-01-28 15:10:06

相關問題