modalViewController 从 superview 中移除后 UIView 消失
Posted
技术标签:
【中文标题】modalViewController 从 superview 中移除后 UIView 消失【英文标题】:UIView disappears after modalViewController is removed from superview 【发布时间】:2009-08-04 12:51:22 【问题描述】:在我的应用程序中,我有一个 tabBarController 和一个 navigationController。我的视图控制器之一是 TableViewController,在导航栏下我添加了一个 uiView 作为视图的子视图,如下所示:
rectangleInfo = [[UIView alloc] initWithFrame:CGRectMake(0,0,[[UIScreen mainScreen] applicationFrame].size.width,26)]; rectangleInfo.autoresizingMask = (UIViewAutoresizingFlexibleWidth); rectangleInfo.backgroundColor = [UIColor darkGrayColor]; [self.view addSubview: rectangleInfo];
当我点击 tableView 中的一个单元格时,我会像这样推送一个 UIViewController:
[feedViewController setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[[self navigationController] presentModalViewController:feedViewController animated:YES];
在我从 tableViewNavigationController 弹出模态视图几次后,rectangleInfo UIView 消失了。
我像这样弹出我的模态视图:
[[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
[self setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self dismissModalViewControllerAnimated:YES];
知道为什么我从父视图中删除模式视图后 tableViewController 的子视图 (rectangleInfo) 消失了吗?
提前谢谢你。
【问题讨论】:
【参考方案1】:我很好奇你想用你的 rectangleInfo 视图做什么?从它的大小来看,您似乎正在尝试模仿状态栏。为什么?如果需要,您可以隐藏状态栏。
您可以尝试的另一件事是在 Interface Builder 中直观地创建 UIView。实际上不要将它添加到您的主视图中,而是将其创建为 XIB 中具有适当大小等的单独 UIView。然后在 Xcode 中为它创建一个插座并连接它。接下来,当您的视图控制器加载时,将其添加为代码中的子视图。看看这是否有所作为。这特别奇怪,因为您说它只是在弹出几次后才消失。如果你以非模态方式 push 和 pop 是否会遇到同样的问题,例如:
[[self navigationController] pushViewController:feedViewController animated:YES];
[[self navigationController] popViewControllerAnimated:YES];
【讨论】:
你好,马特,对于 rectangleInfo 视图,我不想模仿状态栏。这张照片更好地展示了我试图用那个视图做的事情img269.imageshack.us/img269/9001/picture1wim.png。在 NavigationBar 下是 rectangleInfo,上面有一个 UILabel 显示当前类别。我会尝试你的建议,我会带着反馈回来。谢谢 你好,马特,我尝试了你的建议。问题仍然出现,而且因为我有一个标签栏,所以我的 feedViewController 没有出现在它上面。如果我试图隐藏它,我的视图无法使用标签栏占用的空间.. hmm 我再次测试了我的应用程序,我发现我的子视图正在消失,因为我收到了内存警告。操作系统正在释放任何不可见的视图。奇怪的是它不会重建 rectangleInfo 子视图,但在内存警告后再次设置其他视图...【参考方案2】:我通过正确实现 viewDidLoad 和 viewDidUnload 方法来创建和释放我的子视图解决了这个问题。
【讨论】:
以上是关于modalViewController 从 superview 中移除后 UIView 消失的主要内容,如果未能解决你的问题,请参考以下文章
从 ModalViewController 返回后没有出现键盘
从 UISplitViewController 呈现的 modalViewController 出现方向错误
modalViewController 从 superview 中移除后 UIView 消失
从后台恢复显示 ModalViewController,避免下面的内容闪烁
从另一个 modalviewcontroller 呈现 ModalViewcontroller
如何从 UIActivity 视图控制器中选择的 UIActivity 项目中呈现 ModalViewController?