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 添加约束?