【问题标题】:UIViewController won't popUIViewController 不会弹出
【发布时间】:2015-01-14 14:25:37
【问题描述】:

所以我在界面构建器中有两个这样的视图控制器设置:

[初始视图] -- [注册视图]。按下按钮时,初始视图通过 segue 推送到注册视图。我在注册视图控制器上有一个后退按钮。当按下它时,我想回到初始视图控制器。我正在使用此代码:

- (IBAction)tapBack:(id)sender {
    NSLog(@"back");
    [self.navigationController popViewControllerAnimated:YES];       
}

按钮连接正确,但是当我点击按钮时没有任何反应。为什么是这样? UIVIewControllers 之一必须是 UINavigationController 才能工作吗?我只是使用两个 UIViewController。谢谢

【问题讨论】:

  • 在你的故事板中应该有 3 个控制器,一个作为根的导航控制器,作为根附加初始视图和注册附加到初始视图作为推送。顺便说一句,您看到导航栏(带有视图标题)吗?我怀疑这就是问题所在。我可以看看你的故事板的截图吗?
  • 这是问题所在,我没有设置导航控制器。使用导航控制器通常是更好的做法吗?调用popViewControllerAnimated时UIVIewController是销毁还是保存在内存中?

标签: ios objective-c uiviewcontroller popviewcontrolleranimated


【解决方案1】:

如果 segue 是模态的,那么你不能弹回来,因为它是模态视图。要检查,请将 tabBack 操作方法内容替换为:[self dismissViewControllerAnimated:YES completion:nil] 如果它弹回则 segue 是模态的。

【讨论】:

  • 问题是我没有使用 UINavigationController。您发布的代码适用于我不使用 UINavigationController 的项目。当dismissViewController被调用时,UIViewController是被销毁还是存放在内存中待稍后返回?
  • @Kex 。他们被摧毁了。您应该使用导航控制器。总是。尝试阅读:link 我希望这能解释差异。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-22
  • 2023-04-10
  • 2011-08-05
  • 2019-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多