【问题标题】:Set text in the textfield does not work in Obj-C在文本字段中设置文本在 Obj-C 中不起作用
【发布时间】:2013-10-07 23:54:23
【问题描述】:

我想在另一个类的文本字段中设置一个文本并从另一个类中获取它。这是我想要的,但它不起作用。你能帮我么。谢谢!

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

【问题讨论】:

  • 似乎在 [obj.message setStringValue:...] 你的消息属性 == nil(因为它没有从笔尖唤醒),你能检查一下吗?
  • 我检查了它是零,我怎样才能唤醒它?我还在学习过程中。
  • 你没有任何东西可以为消息创建 NSTextField 对象。

标签: objective-c text properties set


【解决方案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

【讨论】:

  • 您给了我确切的答案,我已经搜索过关于该类别可以做什么和不可以做什么。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 2015-08-24
  • 1970-01-01
相关资源
最近更新 更多