Добавление кнопки управления во время выполнения в target-c Какао - PullRequest
0 голосов
/ 07 мая 2011

Если я добавлю эти строки в файл xxxAppDelegate.m, он будет работать нормально.Но мне нужно использовать его под другим модулем, таким как main.m и т. Д. Компилятор выдал ошибку, указав, что окно не определено."окно" определено в модулях xxxAppDelegate, как вы ссылаетесь на него в других модулях, кроме xxxAppDelegate.m

    NSView *superview = [window contentView];
    NSButton *button = [ [ NSButton alloc ] initWithFrame: NSMakeRect( 10.0, 10.0, 200.0, 100.0 ) ];
    [ button setBezelStyle:NSRoundedBezelStyle];
    [ button setTitle: @"Click" ];
    [superview addSubview:button];
    [button setTarget:self];
    [ button setAction:@selector(doSomething:)];

Ответы [ 2 ]

1 голос
/ 07 мая 2011

Какао любит хранить вещи модульными. окно не существует в контексте делегата, потому что это другой класс.

создайте свойство для window в делегате приложения, если оно не существует:

.h

@property(readonly)NSWindow * window;

.m

@synthesize window;

, то:

((YourDelegateClass *)[NSApp delegate]).window должно работать.

0 голосов
/ 07 мая 2011

Вы можете просто вставить этот код куда угодно (IE, поместите его в main). Если, конечно, есть какая-то причина, по которой вам нужно это объявить в делегате?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...