这是关于客观c和可可
我遇到了一个问题而且不知道如何解决它。希望我能在这里找到答案,这对其他一些程序员也有帮助。
所以,我有一个包含4个元素的简单窗口:
这里是“控制器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
当我点击button1时,我在控制器1中“点击” - 一切都很好,工作正常
当我点击button2时,我在控制器2中“点击” - 一切都很好,工作正常
但是如果我想点击button1并在控制器2中“点击”它就不起作用(
任何人都可以帮忙吗?它似乎有一个非常简单的分辨率,但我不知道我做错了什么。
答案 0 :(得分:0)
controller2 * c2 = [[[controller2 alloc] init] autorelease];
你正在创建一个全新的“controller2”(顺便说一句,类的名字错误 - 总是大写类名:“MyController”等)。您需要从Controller1到Controller2的IBOutlet。这样你就可以通过名字向它发送消息。
请记住:笔尖中的对象是“冻干”实例类。