我检查视图是否已经添加/存在,然后我需要删除它
if([self.upgradeView superview])
[self.upgradeView removeFromSuperview];
self.upgradeView被添加到self.view上。但condition返回false,self.upradeView从未被删除。
有遗漏的东西吗?
===============================更新==============================
我已经在视图中添加了此代码,它将出现在用于在self.view上添加self.upgradeView的代码下方
if ([isLoggedInPremiumUser isEqualToString:@"0"])
{
[self createUpgradeFooterView];
}
else
{
if([self.upgradeView superview])
[self.upgradeView removeFromSuperview];
}
您什么时候执行if语句?这可能是因为当调用该视图时,尚未添加该视图。
请提供更多代码,包括添加视图的位置以及调用this if语句的位置。
您可能需要使用UIView's -(BOOL)isDescendantOfView:(UIView *)view;
来检查是否添加了视图。
if(![[self upgradeView] isDescendantOfView:[self view]]) {
[self.view addSubview:[self upgradeView]];
} else {
[[self upgradeView] removeFromSuperview];
}
我遇到了同样的问题,试图在网上搜索任何答案,但没有找到。然后我找到了这个,但也没有解决方案。我尝试了一些调试,以便在代码的不同位置打印superview
。我发现一开始这个值是nil
,但后来就不是了。
所以我认为这个问题是由于UIView
没有完全加载,然后我搜索了几个关于如何检查UIView
是否加载的主题。我终于找到了解决办法。如果我在layoutSubviews
函数中检查superview
属性,并在那里设置所有其他属性。一切都很好!
我知道这是一个老帖子,以防有人同样头疼。