2013-10-07 4 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 

ГЭБ .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: ...] ваше имущество сообщение == ноль (потому что он не пробудился от кончика пера), не могли бы вы проверить это? – 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

Смежные вопросы