我的XIB文件中有一个textfield标签,用于显示我想要动态加载的一些文本。以下是我的应用程序的当前流程:
- 在XIB文件中,文本字段设置为静态文本 - 运行应用程序后,窗口将加载文本字段和静态文本 - 加载后,调用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 :(得分: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,然后在您的控制器中选择它...这可能是更好的设计,具体取决于您需要文本字段的数量。