我試圖設置一個登錄屏幕(ViewController
),該屏幕在成功登錄後導致本身是導航的一部分的用戶列表(UserTableViewController
)控制器。在隨後的屏幕上,如UserTableViewController
應該可以註銷。這會使用戶回到初始登錄屏幕ViewController
。我真的很難以正確的方式連接這些屏幕。必須說,我沒有很多與不同類型的塞格斯和/或代表這樣的經驗,具有一定的研究完成後,我去了一些試驗:基本:正確連接多個(視圖)控制器
- 上
ViewController
成功登錄觸發modal-segue到導航控制器(本身導致UserTableViewController
) UserTableViewController
有一個註銷按鈕,可以觸發另一個模式繼續回到ViewController
。我採取了這些模態賽段,因爲首先,我不希望有一個導致自動創建的後退按鈕或類似的層次結構,其次,我不想在這兩個屏幕之間產生任何「麻煩」,其中一個導航控制器,而另一個沒有。
......看起來這不是一種方法。一個循環之後有些事情會混淆,而屏幕正在改變錯誤的方式。我想一個莫代爾 - 塞格羅圈是不可能的,因爲至少必須有父母和孩子。下一步試驗:
- 上
ViewController
成功登錄後,觸發模式-SEGUE /推SEGUE導航控制器(本身導致UserTableViewController
) - 要返回到登錄界面我來實現,而不是代表在點擊「註銷」時觸發的另一個細分 - 在這裏,我面臨的問題是,我無法正確設置
UserTableViewController
的代表preparingForSegue
的ViewController
。此時segue.destinationViewController
無法降頻爲UserTableViewController
,但僅限於NavigationController
什麼不允許我在目的地設置代表(UserTableViewController
)。
第三審判是做同樣像第二種方法,但實現從ViewController
直接UserTableViewController
一個SEGUE。這可能工作,但現在我沒有任何導航欄了,在我的UserTableViewController
...!
當然,我可以在第三種解決方案中進行手動修復,例如插入獨立導航欄,但這兩種方式似乎都不是很有效。因此,我非常感謝一些提示,強調我在一方面被誤解(完全),並在另一方面展示了一種很好的方式。非常感謝您的幫助!
編輯: 我可以嘗試設置導航控制器作爲初始視圖控制器,然後才讓登錄屏幕ViewController
呈現/由UserTableViewController
駁回 - 是一條可行之路還是有廣爲人知的最佳實踐爲那些登錄查看場景?
只是一種視覺幫助:
感謝您的意見,我一直在努力!無論如何,我很好奇,如果有一種常用的方式來處理登錄屏幕,從實際角度來看,初始視圖控制器,但不是導航堆棧的一部分。當一個註銷它返回 - 我想知道這個週期內的什麼樣的關係是最好的...此外,我想知道如何在這種情況下實現一個委託,導航控制器「阻止向下轉換」 。 @Nicky – 2014-09-12 21:23:40
我相信這個導航實際上不應該是這兩個控制器中的任何一個的責任,而是一些負責應用程序流的協調器對象。如果你有一個場景需要你將用戶登錄到導航控制器的層次結構中?例如,他們的令牌過期了,您需要他們再次登錄。 – Nicky 2014-09-12 21:35:28
無論如何,首選的方法是讓呈現控制器知道(通過委託或其他方式)呈現的控制器已完成其工作,因此它可以處理解僱。畢竟,進一步在導航中的控制器不應該真正意識到它在屏幕上的顯示。 – Nicky 2014-09-12 21:39:18