2010-11-06 42 views
5

我有以下代码访问的UIButton由(ID)发送方

-(IBAction)ATapped:(id)sender{ 
//want some way to hide the button which is tapped 
self.hidden = YES; 
} 

链接到多个按钮。我想隐藏触发这个IBAction的按钮。 self.hidden显然不是按钮。

如何隐藏被点击的按钮?发件人。

感谢

回答

7

发送setHidden消息发送者:

-(IBAction)ATapped:(id)sender{ 
    //want some way to hide the button which is tapped 
    [sender setHidden:YES]; 
} 
+0

我试过sender.hidden = YES;在我发布之前。它给出了一个错误。 – jarryd 2010-11-06 13:46:55

+0

什么错误? – Vladimir 2010-11-06 13:48:14

+0

好了,.hidden给出了“不是结构或联合”的错误,但是[setHidden:YES]有效;) – jarryd 2010-11-06 13:52:57

2

你获得作为参数

-(IBAction)ATapped:(id)sender{ 
    // Possible Cast 
    UIButton* myButton = (UIButton*)sender; 
    myButton.hidden = YES; 
} 
12

两个弗拉基米尔和Henrik的答案是正确的设置按钮对象(ID)。不要让'id'类型吓到你。它仍然是你的按钮对象,只是编译器不知道类型是什么。因此,除非将其转换为特定类型(Henrik的回答),否则您无法在其上引用属性。

-(IBAction)ATapped:(id)sender{ 
    // Possible Cast 
    UIButton* myButton = (UIButton*)sender; 
    myButton.hidden = YES; 
} 

或者您也可以发送任何消息(调用任何方法)的对象,假设你知道的类型(你做什么,这是一个按钮),而无需进行转换(弗拉基米尔的答案)。如果你想改变一个按钮的backgroundColor,正确的代码会是这样

-(IBAction)ATapped:(id)sender{ 
    // Secure Cast of sender to UIButton 
    if ([sender isKindOfClass:[UIButton class]]) { 
     UIButton* myButton = (UIButton*)sender; 
     myButton.hidden = YES; 
    } 
} 
+0

这两种方法都可以抛出一个错误:我的方法可以抛出一个Casting Error并且Vladimirs方法可以抛出一个消息错误 – 2010-11-06 13:41:52

2

如果你想防弹投/短信,试试这个?

[sender setBackgroundColor:(NSColor *)redColor]; 

例如? ...因为它不适用于我...

+0

我相信NSButton应该是UIButton,但是,谢谢你。 – 2012-07-03 22:43:16

0

而且...:

-(IBAction)ATapped:(id)sender{ 
    //want some way to hide the button which is tapped 
    [sender setHidden:YES]; 
}