[問題] UINavigationController傳值問題

看板MacDev作者 (Marshall)時間10年前 (2015/06/09 11:10), 編輯推噓0(0011)
留言11則, 3人參與, 最新討論串1/1
各位版上前輩好, 目前正在試著學習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

06/09 11:12, , 1F
可以hideBackButton
06/09 11:12, 1F

06/09 11:13, , 2F
還有記得取消手勢,不然一樣有辦法返回
06/09 11:13, 2F

06/09 18:24, , 3F
你不能一直用push/show navigation是stack架構
06/09 18:24, 3F

06/09 18:24, , 4F
你這樣到時候要pop可能會出問題
06/09 18:24, 4F

06/09 18:25, , 5F
建議你 登入畫面這種 使用present modally
06/09 18:25, 5F

06/09 18:26, , 6F
並且去找一找delegate&protocol相關用法
06/09 18:26, 6F

06/09 21:10, , 7F
你是想要登入之後 把Login頁面pop掉 然後把資料傳回來?
06/09 21:10, 7F

06/09 21:12, , 8F
如果不確定是誰要接的話 可以試試NSNotificationCenter
06/09 21:12, 8F

06/09 21:13, , 9F
或是樓上提的delegate
06/09 21:13, 9F

06/09 21:14, , 10F
但如果你確定他一定是rootVC, 那你也可以直接用抓rootVC
06/09 21:14, 10F

06/09 21:16, , 11F
強制轉型 然後把資料塞給他就好 (偷懶的方法
06/09 21:16, 11F
文章代碼(AID): #1LTba9ww (MacDev)
文章代碼(AID): #1LTba9ww (MacDev)