IOS子视图并不总是出现

Posted

技术标签:

【中文标题】IOS子视图并不总是出现【英文标题】:IOS Subview doesn't always appears 【发布时间】:2012-11-07 14:49:25 【问题描述】:

我有一个应用,有很多视图和子视图。

在我的应用委托中,我每次收到通知时都会打开一个子视图。 我做了很多测试: - 通知总是收到很好。 - 子视图总是被很好地创建,它永远不会为零。

但是在一两次通知之后,子视图不再显示,即使它们存在并且在内存中创建得很好。

我认为我的内存做错了,我可能误解了视图层次结构。

这是创建和添加子视图的代码:

AppDelegate.h

@property (retain, nonatomic) ViewControllerNewOrder *sub;

AppDelegate.m

sub = [[ViewControllerDriverNewOrder alloc] init];
sub = [mainStoryboard instantiateViewControllerWithIdentifier:@"ViewControllerNewOrder"];
sub.view.frame = self.initialViewController.view.bounds;
[self.initialViewController.view addSubview:sub.view];

感谢您的宝贵时间和帮助!

【问题讨论】:

你可能想试试ios-Hierarchy-Viewer,这样你就可以看到你的子视图在哪里。 我会的。但是有没有办法清理视图堆栈? 可能与您的问题无关,但是...取决于您是否使用 ARC,您的 alloc/init 代码行要么是浪费时间,要么是内存泄漏。 我正在使用 ARC,我添加了这一行,因为我认为问题可能来自于此。但你的意见更合乎逻辑,我认为你是对的。我现在正在删除它。 不出所料,它并没有解决我的问题。 【参考方案1】:

下面这句话救了我的命:

[self.window.rootViewController.view.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

然后我将方法 removeFromSuperView 添加到我需要清除的所有视图中。 当然,您需要像我一样考虑将这条线放在哪里。

谢谢 ;)

【讨论】:

以上是关于IOS子视图并不总是出现的主要内容,如果未能解决你的问题,请参考以下文章

iOS:为啥我的子视图在滚动视图中出现大间距

IOS:在滚动视图中添加一些子滚动视图,图像不出现

UIScrollView 子视图并不总是可点击的

删除 viewdisappear 上的子视图出现时再次添加 - 不工作 - ios sdk

如何将子视图添加到 UITableViewCell

IOS swift如何让我的子视图出现在我的搜索栏下方