[問題] UINavigationController傳值問題

作者: KKFN (John)   2015-06-09 11:09:58
各位版上前輩好,
目前正在試著學習iOS的開發,
使用語言是Objective-c
因為全部都是自學,
也不知道如果有關於iOS元件的問題應該要參考哪一本書,
而這個問題又卡了我很久...
所以我才拿出來這邊提問..
UINavigationController
|
V
MainList(UIViewController)
|
V
LogIn (UIViewController)
目前的畫面是這樣,用StoryBorad拉出來的。
MainList是UINavigationController的RootViewController
現在的情況是我LogIn畫面登入後
我想要把值傳給MainList
一開始想到的是prepareForSegue,
所以我就直接把LogIn畫面上的登入按鈕拉Segue到MainList
但是如果我用Show的方式將畫面換到MainList
那回到MainList時上面的NavigationBar就會有"返回Login"的按鈕
但是這跟邏輯不符
你不可能登入後、回到主畫面,還提供人一個回到Login的按鈕啊
所以我改用其他的,
像是Present Modally或是Show Detail等等,
但是這樣上面的NavigationBar又會在回到MainList後消失...
後來研究一下
發現如果我用Present Modally將Segue從Login指到UINavigationController了話
就能成功進入MainList畫面而且NavigationBar不會消失
但是這樣了話就沒有辦法使用prepareForSegue將值傳到MainList...
想請問如果這樣的情況
我要用什麼功能才能把LogIn的值傳到MainList
並保有NavigationBar且不會出現"返回Login"的按鈕呢?
作者: stweber2001 (Weber)   2015-06-09 11:12:00
可以hideBackButton還有記得取消手勢,不然一樣有辦法返回
作者: tom19830924 (Tom Hsu)   2015-06-09 18:24:00
你不能一直用push/show navigation是stack架構你這樣到時候要pop可能會出問題建議你 登入畫面這種 使用present modally並且去找一找delegate&protocol相關用法
作者: Esvent (Esvent)   2015-06-09 21:10:00
你是想要登入之後 把Login頁面pop掉 然後把資料傳回來?如果不確定是誰要接的話 可以試試NSNotificationCenter或是樓上提的delegate但如果你確定他一定是rootVC, 那你也可以直接用抓rootVC強制轉型 然後把資料塞給他就好 (偷懶的方法

Links booklink

Contact Us: admin [ a t ] ucptt.com