0

我正在開發一個應用程序(在帶有UI構建器的Swift中),我在UINavigationController中嵌入了一個UITableViewController,因此我可以提供有關行的詳細信息,使用標準「+」按鈕添加行到表等。在這一點上,UINavigationController是故事板的入口點。在現有的UINavigationController中插入一個UIViewController

現在我想在故事板中的UITableViewController之前添加一個登錄屏幕作爲UIViewController,因此用戶需要先登錄,並在成功驗證後,將採取到表視圖。我期待新的視圖控制器應該嵌入到現有的導航控制器中(爲了保持連續性,我覺得這很有意義)。但是,我無法弄清楚如何在不破壞現有導航的情況下在導航控制器中插入登錄屏幕。我嘗試了幾種方法,例如從登錄屏幕創建一個新的segue到表視圖,然後用導航控制器和表視圖之間的關係替換爲「root view controller」與登錄屏幕之間的關係,但是當我這樣做時,導航元素中的所有導航元素表格視圖和隨後的屏幕(細節,數據創建)消失。

有沒有這樣做的技巧,還是我將不得不重新創建整個導航邏輯?

謝謝!

+0

您打算如何從登錄屏幕導航到您的表格視圖? – DonMag

+0

請勿插入登錄屏幕。在頂部視圖中顯示它,以便用戶在成功登錄後才能看到頂部視圖。 – rmaddy

+0

@DonMag我嘗試在登錄屏幕類中使用故事板實例化它,然後在按下「登錄」按鈕時顯示它並檢查適當的憑據。這樣做會顯示錶格視圖,但正如我所說的,屏幕頂部的導航欄消失在表格視圖上方。 – David

回答

1

聽起來像你在正確的軌道上...不知道你錯在哪裏。

這將是(一)有效的方法,並且應該給你你要去的東西。

編輯:也請注意,如果你是通過代碼導航,你要推ViewControllers到導航堆棧,而不是「現在」他們。 EG:self.navigationController?.pushViewController(tableViewController, animated: true)

開始NavController ...的TableView是Nav的根,和的DetailView顯示在錶行選擇:

enter image description here

刪除 「根VC」 連接,並在落個新的ViewController -between - 應該對現在這個樣子:

enter image description here

TableView中和的DetailView丟失在頂部的NavBar - 這是確定。

現在,連一個LoginView爲Nav的根,並連接從登錄按鈕顯示順着接下去TablView:

enter image description here

如果一切按計劃進行,NavBar是再次TableView中的頂級顯示和DetailView,根據需要。

+0

這正是我的第一個方法。但是,導航欄重新出現在UI構建器中時,它在運行應用程序時不會顯示。另外,當我點擊其中一個表格行時,雖然從行到詳細視圖的連接仍然是「Show segue」,但是細節視圖以模態方式(從下方)呈現,而不是「顯示」(從右邊)在UI Builder中連接,並且詳細視圖也沒有導航欄。 – David

+0

然後,它聽起來像你沒有連接segues正確...你是否與「顯示」連接?或者其他選項之一? – DonMag

+0

當您選擇segue並查看Attributes Inspector時,如果您有正確的選擇,您應該看到「顯示(例如Push)」。 – DonMag

相關問題