2013-07-15 101 views
0

我在我的XIB文件中有一个textfield标签,用于显示一些我想要动态加载的文本。这里是我的应用程序中的电流:以编程方式用自定义文本初始化NSTextfield

- 在XIB文件,文本字段设置为静态文本 -Upon运行的应用程序,窗口装有文本框和静态文本 - 后负荷,windowDidLoad是并且将文本变为动态的东西

- (void)windowDidLoad 
{ 
    [super windowDidLoad]; 

    NSDate *currentDate = [NSDate date]; 
    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:currentDate]; 
    [myTextField setStringValue:[NSString stringWithFormat:@"Year: %ld", [components year]]]; 
} 

不幸的是,在文本被改变之前有一个小的延迟。将文本字段初始化为动态的最好方法是什么?所以myTextField不必被初始化为静态文本。

+0

你可以创建一个'NSTextField'子类,覆盖'awakeFromNib'方法并将代码放在那里......或者向你的控制器发送一个'NSNotification',这可能是更好的设计。 –

+0

谢谢,你可以把它变成一个答案,所以我选择它。 –

+0

不用担心,您的项目的其余部分祝你好运! –

回答

1

您可以创建一个子类的NSTextField,覆盖awakeFromNib方法,把你的代码中有...以下是一些(未经测试)代码:

// MyDateTextField.h 

@interface MyDateTextField : NSTextField 

@end 



// MyDateTextField.m 

@implementation MyDateTextField 

- (void)awakeFromNib { 
    NSDate *currentDate = [NSDate date]; 
    NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:currentDate]; 
    [myTextField setStringValue:[NSString stringWithFormat:@"Year: %ld", [components year]]]; 
} 

@end 

或者,你可以在awakeFromNib方法发布一个NSNotification和在你的控制器中选择它......这可能是更好的设计,这取决于你需要多少文本字段。

相关问题