XIBファイルにテキストフィールドラベルがあり、動的にロードするテキストを表示するために使用されます。これが私のアプリケーションの現在の流れです:
-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を静的テキストとして初期化する必要はありません。
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を投稿して、コントローラーで取得することもできます...テキストフィールドに必要な量によっては、より適切な設計になる可能性があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加