我已经google了一下,找到了一些答案,但我没有让他们中的任何一个工作。我有一个带有“A”类的NSObject和一个没有NSObject的第二个类“B”。在班级“A”是我的IBOutlets定义,我似乎无法弄清楚如何从“B”级访问这些插座......
我找到了像http://forums.macrumors.com/archive/index.php/t-662717.html这样的回答问题,但这些问题令人困惑。
非常感谢任何帮助!
简化版本的代码:
aClass.h:
#import <Cocoa/Cocoa.h>
@interface aClass : NSObject {
IBOutlet NSTextField *textField;
}
@end
aClass.m:
#import "aClass.h"
@implementation aClass
// Code doesn't matter
@end
bClass.h:
#import <Cocoa/Cocoa.h>
@interface bClass : NSObject {
}
@end
bClass.m:
#import "aClass.h"
#import "bClass.h"
@implementation bClass
[textField setStringValue: @"foo"];
@end
答案 0 :(得分:2)
当你写:
我在课堂上有一个NSObject “A”和第二类“B”没有 NSObject的。
它告诉我你没有理解基本概念。 阅读Apple的Objective-C介绍和教程项目。
答案 1 :(得分:1)
解决方案是使用 NSNotificationCenter 。这是一个告诉你如何做的主题:Send and receive messages through NSNotificationCenter in Objective-C?
然后在对通知做出反应的方法中,调用访问Outlet的方法
- (void) receiveTestNotification:(NSNotification *) notification
{
if ([[notification name] isEqualToString:@"TestNotification"])
//NSLog (@"Successfully received the test notification!");
[self performSelectorOnMainThread:@selector(doIt:) withObject:nil waitUntilDone:false];
}
- (void) doIt
{
//testLabel.text = @"muhaha";
}
这对我有用,我希望它也适合你。