【发布时间】:2014-10-08 12:48:14
【问题描述】:
对于我的 iOS 应用程序,我有一个登录屏幕和一个注册屏幕,每个屏幕都有自己的 UIViewController(分别为 LoginController 和 RegisterController)。在注册屏幕上,我添加了一个后退按钮,该按钮对登录屏幕执行 segue。
当我单击后退按钮时,实现文件似乎发生了变化(从 RegisterController.m 到 LoginController.m),但实际屏幕没有变化。我在我的 LoginController.m 文件的顶部添加了代码 NSLog(@"In LoginController");(在 [super viewDidLoad]; 之后),当我单击注册屏幕上的后退按钮时,每次单击后退按钮时,我的日志都会打印“In LoginController” ,但屏幕永远不会改变。
我创建的 segue 类似于我的应用程序中正常工作的其他 segue。我使用了故事板,按住按钮并将 segue 拖到 LoginController。
有人知道为什么会这样吗?
编辑:所以我改变了我的转场来展开转场,这样我就可以回到导航控制器的原始视图。我有一个从 LoginController 到 TutorialController 的展开 segue,但是当我尝试从 RegisterController 展开到 LoginController 时,视图不会改变(但会调用 LoginController 中的展开方法)。
【问题讨论】:
-
您是否使用导航控制器在这两个屏幕之间切换?如果你想要一个后退按钮,它应该是 pop/push segues。
-
是的,我正在使用带有推送序列的导航控制器
-
如果你正在使用 segue,你不应该使用 unwind segue 以外的任何东西返回到之前的控制器。我不知道为什么你在做什么会导致屏幕不改变。
-
@rdelmar 我正在使用展开转场,我根据here 给出的答案创建了它。我进入 LoginController 中的 unwind 方法,但视图没有改变。
-
很难判断发生了什么,但如果您的“LoginController”日志在该控制器的 viewDidLoad 方法中,则在通过展开转场返回该控制器时不应调用它 - - 它应该回到已经存在的同一个实例,因此不应再次调用 viewDidLoad。如果您可以在某处发布故事板的图像,它可能会有所帮助。
标签: ios objective-c uiviewcontroller segue uistoryboardsegue