2013-07-15 136 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和在你的控制器中選擇它......這可能是更好的設計,這取決於你需要多少文本字段。

相關問題