UIViewController 不会弹出

Posted

技术标签:

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

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

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

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

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

【问题讨论】:

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

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

【讨论】:

问题是我没有使用 UINavigationController。您发布的代码适用于我不使用 UINavigationController 的项目。当dismissViewController被调用时,UIViewController是被销毁还是存放在内存中待稍后返回? @Kex 。他们被摧毁了。您应该使用导航控制器。总是。尝试阅读:link 我希望这能解释差异。

以上是关于UIViewController 不会弹出的主要内容,如果未能解决你的问题,请参考以下文章

CoreData 数据到 UIViewController 中的 UITableView?

为啥 UIPopoverController 不是 UIViewController 的子类?

在 UIViewController 中创建整个 UIView

以编程方式向 UIView 或 UIViewController 添加约束?

Interface Builder 是如何知道 UIViewController 的视图的?

如何在 SwiftUI 中使用 UIViewController 和 UIView?