2016-10-06 19 views
-2

我有一個簡單的導航視圖層次結構,它有兩個視圖之間。我想要一個自定義導航欄,所以我隱藏了默認導航欄,並且我已經實現了一個Container視圖,該視圖在導航層次結構中的兩個視圖之間共享。如何在沒有動畫的情況下在導航層次結構中共享視圖?

一切正常,因爲我想要它,除非當我繼續向下或更高的視圖頂部欄出現幻燈片並重新出現在新的視圖。我希望它在推送或彈出到層次結構中的其他視圖時顯示爲靜止。

有沒有簡單的方法來做到這一點?或者我應該刪除我的自定義共享容器視圖,並嘗試使用導航欄(我目前「隱藏」)的這個工作?

+0

好像做什麼,我試圖做的是隻硬着頭皮學習如何定製默認的導航控制器(改變它的高度,並添加自定義按鈕)的最佳方式。然而,現在我要試着用多個重疊的容器視圖完成我的應用程序,我可以在屏幕上和屏幕之間滑動,因爲只要這不會導致一些不可預見的新問題,這是一種我已經非常熟悉的方法並會得到我想要的樣子。 – PlateReverb

回答

1

我不得不爲客戶做一次。就像你說的那樣,我們做的是製作一個包含容器視圖的環繞視圖控制器。在此容器視圖中,我們嵌入了一個UINavigationController,並手動彈出並將UIViewController s推送到其導航堆棧。當然你想隱藏UINavigationController的導航欄。

這聽起來像是你實現了這一點,而是你只是在你的自定義導航控制器中嵌入一個普通的舊視圖控制器,然後繼續到另一個視圖控制器,它也嵌入在自定義視圖控制器中?理想情況下,您需要使用嵌入式UINavigationController的此自定義導航控制器的一個實例。我相信你將不得不以編程方式完成所有視圖控制器轉換。

意見:我個人建議這樣做。我相信應用程序應該感覺像是它所在的操作系統的擴展。用戶應該覺得這是他們手機的一部分。使用本地導航欄還可以降低用戶需要努力瞭解您的應用程序的工作量。

我知道你在想「但它只是一個導航欄」,但我們正在談論的是如果加載時間超過2.5s,可能會卸載應用程序的同一人。

+0

我在2個VC之間有一個普通的'UINavigationController'設置。每個VC都包含一個嵌入的容器視圖,它具有相同的大小,並通過嵌入式鏈接鏈接到相同的VC。我沿着這條路線前進,因爲我不知道如何自定義尺寸並將按鈕添加到默認導航欄中,到目前爲止,它的工作原理與我想要的完全一樣,除非我不希望它在上下拉伸時重新生成導航堆棧。就美觀而言,我的容器視圖「準導航欄」和原生導航欄之間的唯一區別在於它的高度稍小一些。 – PlateReverb

+0

您的隱藏導航欄的代碼位於何處? @PlateReverb – Zolnoor

+0

在兩個View控制器類裏面 – PlateReverb

1

我想定製的導航欄,所以我必須隱藏

默認的那是你的錯。在UINavigationController接口中獲取自定義導航欄的方法是使用init(navigationBarClass:toolbarClass:)對其進行初始化。現在內置導航控制器正在使用您的導航欄!從那裏開始,一切都會好的。

https://developer.apple.com/reference/uikit/uinavigationcontroller/1621866-init

+0

我的「自定義導航欄」實際上只是一個視圖控制器中的一個單獨的視圖,它通過圖層VC上的單獨的嵌入容器視圖在導航堆棧的不同視圖之間共享。 – PlateReverb

+0

這個初始化應該放在哪裏?是否有可能初始化一個容器視圖或視圖控制器它有一個嵌入式Segue連接作爲導航欄?或者我需要以其他方式創建自定義導航欄? – PlateReverb

相關問題