Как правильно вызывать IBAction с другого контроллера? - PullRequest
0 голосов
/ 05 октября 2011

Речь идет о цели с и какао

Я столкнулся с проблемой и не знаю, как ее решить. Надеюсь, я смогу найти ответ здесь, и он будет полезен для некоторых других программистов.

Итак, у меня есть простое окно с 4 элементами:

  1. NSTextField - первое поле для установки значения
  2. NSButton - установить значение в первом поле
  3. NSTextField - второе поле для установки значения
  4. NSButton - установить значение во втором поле

вот код "контроллера 1":

#import "controller2.h"

@interface controller1 : NSControl{
IBOutlet NSTextField * text1;
}
-(IBAction)click:(id)sender;
@end

@implementation controller1
-(IBAction)click:(id)sender
{
[text1 setStringValue:@"text1 changed"];

// create controller 2 instance
controller2 * c2 = [[[controller2 alloc] init] autorelease];
// call first time using one way
[c2 click:self];

// call second time using another way
[self sendAction:@selector(click:) to:c2];
}
@end

и код контроллера 2:

@interface controller2 : NSControl{
IBOutlet NSTextField * text2;
}
-(IBAction)click:(id)sender;

@end

@implementation controller2
-(IBAction)click:(id)sender
{
[text2 setStringValue:@"text 2 changed"];
NSLog(@"Test2");
}
@end

когда я нажимаю кнопку1, я запускаю "click" в controller1 - все нормально и работает правильно

когда я нажимаю на button2, я запускаю "click" в controller2 - все хорошо и работает правильно

НО, если я хочу нажать кнопку1 и увеличить "щелчок" в контроллере2, это не сработает (

Может кто-нибудь помочь с этим? Кажется, у него очень простое разрешение, но я не знаю, что я сделал не так.

1 Ответ

0 голосов
/ 05 октября 2011
controller2 * c2 = [[[controller2 alloc] init] autorelease];

Вы создаете совершенно новый «controller2» (кстати, плохое имя для класса - всегда пишите заглавными буквами имена классов: «MyController» и т. Д.).Вам нужен IBOutlet от вашего Контроллера1 до Контроллера2.Таким образом, вы можете отправлять ему сообщения по имени.

Помните: объекты в перо "высушены" экземплярами классов.

...