2010-11-19 57 views
1

我有一个编辑窗口有几个字段,所有绑定到一个NSObjectController的'内容'控制器键,它又反过来绑定到'选择'控制器一个NSArrayController的键。我也有一个NSTableView绑定到同一个NSArrayController,以及它的选择。可可绑定,延迟提交的编辑,直到用户点击'确定'

在我的编辑窗口中,只要用户离开文本框,该值就会传播回NSTableView。如何在编辑窗口中单击“确定”之前停止提交的值?

+0

我试图创建一个新的ManagedObjectContext用于编辑窗口,但即使未调用[上下文保存],更改仍会立即反映出来。我不知道这是否是一种好方法。我仍然绑定到主要的ManagedObjectContext的选择,这可能会使这不工作,因为我打算。也许可以将选择从一个上下文复制到另一个上下文吗? – 2010-11-19 04:04:31

回答

1

你可以使用一个临时NSMutableDictionary对象的值存储在编辑窗口,然后当用户点击“确定”使用字典的价值观实例化一个对象:即:

NSManagedObject* obj = [NSEntityDescription insertNewObjectForEntityForName:@"MyObject"            
         inManagedObjectContext: self.managedObjectContext]; 

[obj setValuesForKeysWithDictionary:tempObject]; 
0

我会建议在编辑窗口中使用瞬态值。然后,当用户点击“确定”时,实际分配值。

+0

你的意思是...像[[obj valueTransient]]一样绑定到'[obj value]'的包装器,然后在用户点击OK的方法中,通过并执行'[obj setValue:[objValueTransient]]' ?我觉得我失去了一些东西。 – 2010-11-19 02:25:07

+0

对不起,我的意思是使用一个完全独立的对象,直到用户点击确定 – griotspeak 2010-11-19 03:12:37