从其他类(ObjC)访问IBOutlet

时间:2009-12-20 15:55:23

标签: objective-c class nsobject

我已经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

2 个答案:

答案 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";
}

这对我有用,我希望它也适合你。