Как использовать кнопку IBAction за пределами ее сферы действия - PullRequest
1 голос
/ 15 июля 2011

У меня есть три IBActions, каждая из которых связана со своей кнопкой, например:

#import "Controller.h"
#import "Application.h"

@implementation Controller
- (IBAction)deal:(id)sender {
    NSButton *deal = (NSButton *)sender;
    ...
}

- (IBAction)hit:(id)sender {
    NSButton *hit = (NSButton *)sender;
    ...
}

- (IBAction)stay:(id)sender {
    NSButton *stay = (NSButton *)sender;
    ...
}
@end

Как вы используете / вызываете кнопку вне ее области? Я хочу сделать что-то вроде этого:

 - (IBAction)hit:(id)sender {
    NSButton *hit = (NSButton *)sender;
    ...
    [hit setEnabled: NO];
    [stay setEnabled: NO]; // Using/altering "Stay's" button
}

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Вы можете объявить свойство NSButton как IBOutlet в вашем контроллере представления, а затем в Интерфейсном Разработчике вы можете связать свою кнопку с ним.

Что-то вроде:

@property (nonatomic, assign) IBOutlet NSButton * button;
1 голос
/ 15 июля 2011

IBAction - это typedef of void, используемый для обозначения методов, которые вы хотите, чтобы Interface Builder (или дизайнер интерфейса Xcode 4 обнаружил. Это просто обычные методы без внешней ссылки на что-либо.

То, что вы, вероятно, хотите, чтобы некоторые IBOutlets для подключения к кнопке. Например. чтобы подключиться к кнопке нажатия, вы должны добавить это к своему @interface:

IBOutlet NSButton *hit;

Тогда в Интерфейсном Разработчике или XCode вы должны иметь возможность перетаскивать ссылку из вашего класса на кнопку и подключать розетку - в противоположность тому, что вы делали для эффективного подключения событий кнопки к вашему классу. .

Поскольку попадание является переменной экземпляра, вы можете получить к нему доступ из любого метода в вашем классе.

...