2016-02-23 32 views
0

我的應用程序有一個NSTableView的左側(主)和文本框右側(詳細信息)如何在使用綁定的NSTextField中以編程方式替換「No Selection」佔位符?

我使用的核心數據&結合以獲得顯示的記錄。

我有一個與NSObjectController綁定的文本文件。這是一個日期字段,我在文本字段中添加了NSDateFormatter。

我的目標是:在該文本字段上使用用戶系統默認日期格式佔位符。我已經實現了用下面的代碼

.H代碼:(僅相關的代碼張貼)

@property (weak) IBOutlet NSDateFormatter *offerExpiresOnDateFormatter; 
@property (weak) IBOutlet NSTextField *offerExpiresOnDateTextField; 

與.m代碼:

-(void)viewWillAppear { 

    [_offerExpiresOnDateFormatter setDateStyle:NSDateFormatterShortStyle]; 
    [_offerExpiresOnDateTextField setPlaceholderString:[_offerExpiresOnDateFormatter dateFormat]]; 

} 

這一切工作。

我的問題:

它的工作原理,只有當應用程序負載(因爲我用viewWillAppear中)。

佔位符以dd/mm/yy格式顯示,我的系統默認格式。但是,如果在NSTableView中單擊空行,我的佔位符將消失,並顯示「無選擇」佔位符。

我該如何預防?

當用戶單擊NSTableView中的空行時,如何顯示我的dd/mm/yy佔位符?

我不能只在綁定檢查器下的NSTextField No Selection Placeholder中鍵入dd/mm/yy,因爲我不知道用戶將作爲系統默認值具有什麼功能。

+0

試圖拖動和從對象庫滴'NSDateFormatter'對象'NSTextField'在故事板,並設置日期和時間風格屬性檢查器。註釋掉你的代碼並嘗試這種方式。 – Khundragpan

+0

嘗試綁定沒有選擇佔位符到您的視圖控制器的關鍵路徑'offerExpiresOnDateFormatter.dateFormat'。 – Willeke

+0

@Willeke,你能告訴我該怎麼做嗎? – user2417624

回答

1

不要綁定XIB中的值,用選項手動綁定它。

[self.offerExpiresOnDateTextField bind:NSValueBinding 
    toObject:self.objectController 
    withKeyPath:@"selection.date" 
    options:@{NSNoSelectionPlaceholderBindingOption: 
     self.offerExpiresOnDateFormatter.dateFormat}]; 
+0

我得到一個錯誤[ valueForUndefinedKey:]:這個類不是關鍵的日期編碼兼容的值。我從XIB解綁定了textfield,並將上面的代碼放在了awakeFromNib方法中。我也在viewWillLoad和viewDidLoad中嘗試了相同的代碼,沒有任何成功。任何幫助? – user2417624

+0

哎呀錯了,我必須多加註意。我編輯了我的答案。 – Willeke

+0

完美。奇蹟般有效。謝謝。 – user2417624