UIView superview在self.view上添加了nil

时间:2015-03-23 06:22:37

标签: ios nsresponder

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

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

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

有什么遗漏的吗?

========================= UPDATE ===================== ===============

我在viewwillappear中添加了这段代码,就在用于在self.view上添加self.upgradeView的代码下面这样

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

3 个答案:

答案 0 :(得分:0)

你什么时候做这个if语句?可能是在调用此视图时尚未添加视图。

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

答案 1 :(得分:0)

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

if(![[self upgradeView] isDescendantOfView:[self view]]) { 
    [self.view addSubview:[self upgradeView]];
} else {
    [[self upgradeView] removeFromSuperview];
}

答案 2 :(得分:0)

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

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

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