1

我用谷歌搜索并找到了一些答案,但我没有让它们中的任何一个起作用。我有一个具有“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
4

2 回答 2

2

当你写:

我有一个具有“A”类的 NSObject 和一个没有 NSObject 的第二类“B”。

它告诉我,您对基本概念一无所知。通读 Apple 的 Objective-C 介绍和教程项目。

于 2009-12-20T16:25:33.940 回答
1

解决方案是使用NSNotificationCenter。这里有一个线程告诉你怎么做:在 Objective-C 中通过 NSNotificationCenter 发送和接收消息?

然后在响应通知的方法中,调用访问 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";
}

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

于 2011-08-19T09:48:15.063 回答