2010-03-30 31 views
0

我正在研究一個動態創建NSTableColumns的核心數據文檔應用程序。數據單元格類型可以是複選框,滑塊等。以編程方式綁定到所有單元格類型,但NSTextFieldCell除外。綁定到NSTextField單元格不工作,編輯值重置爲默認值

所有NSTextFieldCells都無法綁定,編輯後它們返回到它們的默認值。無論它們是否綁定到字符串,數字(應用了NSNumberFormatter)或日期(應用了NSDateFormatter),都會發生這種情況。我使用以下格式來完成所有綁定:

NSDictionary *textFieldOpts = [NSDictionary dictionaryWithObjectsAndKeys:@"YES", NSContinuouslyUpdatesValueBindingOption, @"YES", NSValidatesImmediatelyBindingOption, nil]; 
[aCell bind:@"value" toObject:[[entryAC arrangedObjects] objectAtIndex:0] withKeyPath:@"numberData" options:textFieldOpts]; 

再次,如果電池類型是什麼,但一個NSTextFieldCell這些語句的工作。

我投入一個-observeValueForKeyPath方法來記錄值​​的變化......和其他單元格類型(例如,NSSliderCell)我可以看到值的變化,但與NSTextFieldCell,它永遠不會更新。

回答

0

原來,我需要實現NSTableView的數據源的方法setObjectValue手動獲得從NSTableView的(查看)的變化,然後手動在陣列控制器中設置的數據(模型)類似下面的代碼:

- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { 
    [[[entryAC arrangedObjects] objectAtIndex:rowIndex] setValue:(NSNumber *)anObject forKey:@"numberData"]; 
} 

由於某種原因,當以逐個單元爲基礎以編程方式進行設置時,綁定到NSTextFieldCells只能以單向方式工作:僅顯示數據。我個人認爲這是一個bug ...