[问题] 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