-2

別のクラスのテキスト フィールドにテキストを設定し、別のクラスから取得したいと考えています。これは私が欲しいものですが、うまくいきません。手伝ってくれませんか。ありがとうございました!

aaa.h

#import <Cocoa/Cocoa.h>

@interface aaa : NSImageView {
    IBOutlet NSTextField *message;
}
@property (nonatomic, retain) IBOutlet NSTextField *message;
@end

aaa.m

#import "aaa.h"
#import "bbb.h"

@implementation aaa
@synthesize message;

- (void)awakeFromNib {
    // [message setStringValue:@"ok, this works!"]; //but i don't want it from here
    [self hello];
}
@end

bbb.h

#import <Foundation/Foundation.h>

@interface NSObject (bbb)
- (void)hello;
@end

bbb.m

#import "bbb.h"
#import "aaa.h"

@implementation NSObject (bbb)
- (void)hello {
    aaa *obj = [[[aaa alloc] init] autorelease];
    [obj.message setStringValue:@"This doesn't work :("]; // set text here, dont work.
    NSLog(@"TEST: %@", [obj.message stringValue]);
}
@end
4

1 に答える 1

1

カテゴリを使用しているため、最初に既存のクラスの機能を拡張するために使用されます。したがって、カテゴリ内にテキストフィールドの値を設定することはできません。ただし、値を抽出した後に機能を追加することもできます。したがって、最初にカテゴリ内に値を渡す必要があります。以下のようにしてみてください:

- (void)awakeFromNib {
    NSString *resultString=[self hello:@"This doesn't work :("];
[message setStringValue:resultString];
}
@end


@interface NSObject (bbb)
- (NSString*)hello:(NSString*)yourString;
@end

@implementation NSObject (bbb)
- (NSString*)hello:(NSString*)yourString {
    return yourString;
}
@end
于 2013-10-08T04:11:53.493 に答える