2013-07-15 2 views
0

У меня есть текстовая метка в моем XIB-файле, которая используется для отображения некоторого текста, который я хочу динамически загружать. Вот текущий поток моих приложений:Инициализировать 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 

В качестве альтернативы, вы можете опубликовать NSNotification в методе awakeFromNib и заберите его в своем контроллере ... Это может быть лучше, в зависимости от того, сколько вам нужно для вашего текстового поля.

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