2

我正在调试一个 iphone 应用程序,但我看到了一些我不完全理解的东西。

根据用户的选择,显示或隐藏 UIView。[view setHidden:NO]当前代码使用和显示或隐藏视图[view setHidden:YES]。这是行不通的:从视觉上看,就好像这些语句被简单地忽略了。但是,当我将它们分别更改为view.hidden = NO和时view.hidden = YES,一切都按预期工作。

我在想这两种语法是等价的,但显然不是。对于所有其他属性(textfont等),两者的工作方式相同,那么有什么特别之处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.
}
4

3 回答 3

0

设置视图是否隐藏。

- (void)setHidden:(BOOL)flag

返回接收者是否被标记为隐藏。

- (BOOL)isHidden

隐藏=是;与 setHidden:YES 相同;不同之处在于,您立即将 hidden 变为 YES 而 sethidden 视图从其窗口中消失并且不接收输入事件,因为它被设置为隐藏。但是,它仍保留在其父视图的子视图列表中,并像往常一样参与自动调整大小。

于 2012-05-24T16:15:07.183 回答
0

回想起来,我记得差不多 3 年前遇到过同样的问题,当时 iPhone 3(甚至不是 3G)风靡一时。我不确定为什么会发生这种情况,但确实如此 - 所以我只是通过使用“点”表示法设置属性来处理它。我想,这是“如果它没有坏就不要修复它”的事情之一(好吧,它有点坏了,但是有一个简单的方法可以解决它,所以我正在使用它)。

于 2012-05-28T08:05:58.403 回答
-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”来设置属性。

我希望它会帮助你

于 2012-05-24T14:46:20.010 回答