2010-11-06 3 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

+0

какая именно ошибка? – Vladimir

+0

Хорошо, hidden дает ошибку «не структура или объединение», но [setHidden: YES] работает;) – jarryd

2

Вы получаете кнопки объекта (ID) при условии в качестве параметра

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

И Владимир и Хенрика ответы будут правильными. Не допускайте, чтобы тип «id» пугал вас. Это все еще ваш объект кнопки, это просто, что компилятор не знает, что такое тип. Таким образом, вы не можете ссылаться на свойства на нем, если только это не относится к определенному типу (ответ Хенрика).

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

Или вы можете отправить любое сообщение (вызвать любой метод) на объекте, если вы знаете тип (который вы делаете, это кнопка), без того, чтобы бросить (ответ Владимира).

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

Оба метода могут вызывать ошибку: мой метод может вызвать ошибку кастинга, а метод Vladimirs может вызвать ошибку обмена сообщениями –

2

Если вы хотите пуленепробиваемые произнесения/сообщений, попробуйте следующее:

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

Я считаю, что NSButton должен быть UIButton, но да, спасибо за это. –

0

И ... если вы хотите изменить BackgroundColor одной кнопки, правильный код будет выглядеть следующим образом?

[sender setBackgroundColor:(NSColor *)redColor]; 

например? ... потому что это не работает для моего ...

Смежные вопросы