我检查视图是否已添加/存在,然后我需要将其删除
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];
}
答案 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
属性,并在那里设置所有其他属性。一切都很棒!
我知道这是一个老帖子,以防万一有人同样头痛。