2013-10-07 56 views
-2

我想在另一個類的文本字段中設置文本,並從另一個類中獲取文本。這是我想要的,但它不起作用。你能幫我麼。謝謝!在文本字段中設置文本在Obj-C中不起作用

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 
+0

看起來像[obj.message setStringValue:...]您的消息屬性== nil(因爲它不是從nib喚醒),你能檢查這個嗎? – BergP

+0

我檢查它是零,我怎麼能醒它?我仍在學習過程中。 – pipe3r

+0

你沒有什麼可以爲消息創建NSTextField對象。 –

回答

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 
+1

你給了我確切的答案,我已經搜索了什麼類別可以和什麼不是。非常感謝你! – pipe3r