我正在调试一个iphone应用程序,我看到了一些我完全不理解的东西。
根据用户的选择,显示或隐藏UIView。当前代码使用[view setHidden:NO]
和[view setHidden:YES]
显示或隐藏视图。这不起作用:视觉上就好像忽略了这些陈述。但是,当我分别将它们更改为view.hidden = NO
和view.hidden = YES
时,一切都按预期工作。
我在想这两种语法是等价的,但显然不是。对于所有其他属性(text
,font
等),两者的工作方式相同,那么hidden
有什么特别之处?
编辑:以下是我的部分代码的复制/粘贴。我正在使用iPhone模拟器5.0在XCode 4.3中工作
这是我项目中的一个例子。
IBOutlet UIView *panel; //Connected in interface builder
===========
- (void)makePanelVisible:(BOOL)visible
{
[panel setHidden:!visible]; //this does not work
panel.hidden = !visible; //this does work correctly.
}
答案 0 :(得分:1)
回想起这一点,我记得差不多3年前碰到同样的问题,当时iPhone 3(甚至不是3G)风靡一时。我不确定为什么会这样,但确实如此 - 所以我只是通过使用“点”符号设置属性来处理它。我想,这是其中之一“如果它没有被破坏就不要修复它”(好吧,它有点破碎,但它有一个简单的方法,所以我正在使用它。)
答案 1 :(得分:0)
设置是否隐藏视图。
- (void)setHidden:(BOOL)flag
返回接收者是否标记为隐藏。
- (BOOL)isHidden
隐藏= YES;与setHidden相同:YES;不同的是,你正在隐藏为YES,而sethidden视图从它的窗口消失,并且没有接收输入事件,因为它被设置为隐藏。但它仍保留在超级视图的子视图列表中,并像往常一样参与自动调整。
答案 2 :(得分:-1)
hidden是UIView的一个属性。当您编写[panel setHidden:YES]时,您尝试调用应设置隐藏属性的方法setHidden。它不起作用,因为UIView中不存在该方法:https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/doc/uid/TP40006816
我总是通过编写“view.hidden = x”来设置属性。
我希望它能帮到你