作者KKFN (Marshall)
看板MacDev
標題[問題] UINavigationController傳值問題
時間Tue Jun 9 11:09:58 2015
各位版上前輩好,
目前正在試著學習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"的按鈕呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.17.9.220
※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1433819401.A.EBA.html
→ stweber2001: 可以hideBackButton 06/09 11:12
→ stweber2001: 還有記得取消手勢,不然一樣有辦法返回 06/09 11:13
→ tom19830924: 你不能一直用push/show navigation是stack架構 06/09 18:24
→ tom19830924: 你這樣到時候要pop可能會出問題 06/09 18:24
→ tom19830924: 建議你 登入畫面這種 使用present modally 06/09 18:25
→ tom19830924: 並且去找一找delegate&protocol相關用法 06/09 18:26
→ Esvent: 你是想要登入之後 把Login頁面pop掉 然後把資料傳回來? 06/09 21:10
→ Esvent: 如果不確定是誰要接的話 可以試試NSNotificationCenter 06/09 21:12
→ Esvent: 或是樓上提的delegate 06/09 21:13
→ Esvent: 但如果你確定他一定是rootVC, 那你也可以直接用抓rootVC 06/09 21:14
→ Esvent: 強制轉型 然後把資料塞給他就好 (偷懶的方法 06/09 21:16