2

我检查视图是否已经添加/存在,然后我需要将其删除

if([self.upgradeView superview])
        [self.upgradeView removeFromSuperview];

self.upgradeView 添加在 self.view 上。但条件返回 false 并且 self.upgradeView 永远不会被删除。

有什么遗漏的吗?

==========================更新======================== =============

我在 viewwillappear 中添加了这段代码,就在用于在 self.view 上添加 self.upgradeView 的代码下方,如下所示

if ([isLoggedInPremiumUser isEqualToString:@"0"])
{
    [self createUpgradeFooterView];
}
else
{
    if([self.upgradeView superview])
        [self.upgradeView removeFromSuperview];
}
4

3 回答 3

0

你什么时候做这个if语句?可能是当它被调用时,视图还没有被添加。

请提供更多代码,包括添加视图的位置以及调用此 if 语句的位置。

于 2015-03-23T06:29:56.957 回答
0

您可能想用来UIView's -(BOOL)isDescendantOfView:(UIView *)view;检查是否添加了视图。

if(![[self upgradeView] isDescendantOfView:[self view]]) { 
    [self.view addSubview:[self upgradeView]];
} else {
    [[self upgradeView] removeFromSuperview];
}
于 2015-03-23T06:33:38.387 回答
0

我有同样的问题,并试图在网上搜索任何答案,但没有找到。然后我发现了这个,但也没有解决方案。我尝试了一些调试以superview在代码中的不同位置打印。我发现起初这个值是nil但后来不是。

所以我认为这个问题是由于UIView没有完成加载,然后我搜索了几个关于如何检查aUIView是否加载的主题。最后我想我得到了解决方案。如果我检查函数中的superview属性layoutSubviews,并在那里设置所有其他属性。一切都很好!

我知道这是一个旧帖子,以防万一有人遇到同样的头痛。

于 2016-03-07T00:40:17.723 回答