【问题标题】:(iOS) Segue changes the implementation (.m) file, but not the actual screen view(iOS) Segue 更改实现 (.m) 文件,但不更改实际的屏幕视图
【发布时间】: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


【解决方案1】:

所以我发现了问题

performSegueWithIdentifier 中,我有sender:self 而不是sender:self.backBtn

【讨论】:

    猜你喜欢
    • 2013-04-26
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 2018-06-11
    相关资源
    最近更新 更多