Iphone view.hidden=x和[view setHidden:x]之间的差异
我正在调试一个iphone应用程序,看到一些我不完全理解的东西 根据用户的选择,将显示或隐藏UIView。当前代码使用Iphone view.hidden=x和[view setHidden:x]之间的差异,iphone,view,show-hide,Iphone,View,Show Hide,我正在调试一个iphone应用程序,看到一些我不完全理解的东西 根据用户的选择,将显示或隐藏UIView。当前代码使用[view setHidden:NO]和[view setHidden:YES]显示或隐藏视图。这是行不通的:从视觉上看,这些语句似乎被忽略了。但是,当我分别将它们更改为view.hidden=NO和view.hidden=YES时,一切都按预期进行 我认为这两种语法是等价的,但显然不是。对于所有其他属性(文本,字体,等等),它们的工作原理相同,那么隐藏有什么特别之处呢 编辑:这
[view setHidden:NO]
和[view setHidden:YES]
显示或隐藏视图。这是行不通的:从视觉上看,这些语句似乎被忽略了。但是,当我分别将它们更改为view.hidden=NO
和view.hidden=YES
时,一切都按预期进行
我认为这两种语法是等价的,但显然不是。对于所有其他属性(文本
,字体
,等等),它们的工作原理相同,那么隐藏
有什么特别之处呢
编辑:这是我的一些代码的复制/粘贴。我正在使用带有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.
}
hidden是UIView的一个属性。编写[panel setHidden:YES]时,尝试调用应将属性设置为hidden的方法setHidden。该方法不起作用,因为UIView中不存在该方法: 我总是通过写“view.hidden=x”来设置属性
我希望它能帮助您隐藏是UIView的一个属性。编写[panel setHidden:YES]时,尝试调用应将属性设置为hidden的方法setHidden。该方法不起作用,因为UIView中不存在该方法: 我总是通过写“view.hidden=x”来设置属性
我希望它能帮助您设置视图是否隐藏
- (void)setHidden:(BOOL)flag
返回接收器是否标记为隐藏
- (BOOL)isHidden
隐藏=是;与setHidden相同:是;区别在于,您将立即将“隐藏”设置为“是”,而sethidden view将从其窗口中消失,并且不会接收输入事件,因为它被设置为“隐藏”。但是,它仍保留在superview的子视图列表中,并像往常一样参与自动调整大小。设置视图是否隐藏
- (void)setHidden:(BOOL)flag
返回接收器是否标记为隐藏
- (BOOL)isHidden
隐藏=是;与setHidden相同:是;区别在于,您将立即将“隐藏”设置为“是”,而sethidden view将从其窗口中消失,并且不会接收输入事件,因为它被设置为“隐藏”。然而,它仍然保留在superview的子视图列表中,并像往常一样参与自动调整大小。回想起来,我记得差不多3年前,当iPhone 3(甚至不是3G)风靡一时时,我也遇到了同样的问题。我不知道为什么会发生这种情况,但确实如此,所以我只是通过使用“点”符号设置属性来处理它。我想,这是一个“如果它没有坏就不要修复”的东西(好吧,它有点坏了,但有一个简单的方法,所以我在使用它)。回想一下,我记得差不多3年前,当iPhone 3(甚至不是3G)风靡一时时,我遇到了同样的问题。我不知道为什么会发生这种情况,但确实如此,所以我只是通过使用“点”符号设置属性来处理它。我想,这是一个“如果它没有损坏就不要修复”的东西(好吧,它有点坏了,但是有一个简单的方法,所以我使用它)。应该没有区别,因为setHidden只是为hidden属性生成的setter。实际上,当您使用view.hidden=YES分配属性时,它应该在内部调用setHidden。你能粘贴一些代码吗,也许问题出在别处。您的视图是哪种类型的?没有太多代码可粘贴。视图实际上是
UIView
。我将在一分钟内粘贴有问题的两行。应该没有区别,因为setHidden只是为hidden属性生成的setter。实际上,当您使用view.hidden=YES分配属性时,它应该在内部调用setHidden。你能粘贴一些代码吗,也许问题出在别处。您的视图是哪种类型的?没有太多代码可粘贴。视图实际上是UIView
。我将在一分钟内粘贴有问题的两行。这显然是错误的hidden
是一个属性,它被声明为@property(非原子,getter=ishdden)BOOL hidden
。这意味着所有者类有方法setHidden:(BOOL)
和ishiden
。如果该方法不存在,我将在XCode中得到一个错误或至少一个警告。相反,这一呼吁似乎被忽视了,这显然是错误的hidden
是一个属性,它被声明为@property(非原子,getter=ishdden)BOOL hidden
。这意味着所有者类有方法setHidden:(BOOL)
和ishiden
。如果该方法不存在,我将在XCode中得到一个错误或至少一个警告。相反,电话似乎被忽略了。这是如何解释问题的?我已经知道了。问题是调用setHidden:NO
方法不会隐藏视图-调用后视图仍然显示;但是从所有文档来看,它应该是。如果问题被设置为隐藏:没有方法不会隐藏视图,因为它被设置为否。设置为隐藏:是会隐藏视图您肯定误解了我的问题:[view setHidden:yes]
不会隐藏视图(尽管它应该),但是view.hidden=YES
可以。这是如何解释问题的?我已经知道了。问题是调用setHidden:NO
方法不会隐藏视图-调用后视图仍然显示;但是从所有文档来看,它应该是。如果问题被设置为隐藏:没有方法不会隐藏视图,因为它被设置为否。设置为隐藏:是将隐藏视图您肯定误解了我的问题:[view setHidden:yes]
不隐藏视图(尽管它应该),但是view.hidden=yes
会隐藏视图。