1
我的核心數據應用程序(不是基於文檔)有兩個窗口。每個窗口都包含一個表視圖,其中包含來自同一個NSManagedObjectContext的(不同)數據。我用這個代碼在這兩個窗口控制器,以啓用撤消支持:多個窗口的核心數據和單獨的撤銷管理器?
- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window {
return [[(AppDelegate *)[NSApp delegate] managedObjectContext] undoManager];
}
這種方法的缺點是用戶將撤消他在一個窗口中所做的更改,而他是在另一個窗口工作。即使用戶選擇關閉其中一個窗口,撤消管理器仍將撤消關閉窗口中的更改。這個問題的明顯解決方案是使用兩個單獨的NSUndoManager對象,但我不知道如何執行此操作。我已經使用NSManagedObjectContexts「-setUndoManager:」他想用每一個窗口單獨的撤消管理器,但我無法找到一個合適的地方把代碼,所以我想這:
- (NSUndoManager *)windowWillReturnUndoManager:(NSWindow *)window {
[[(CAppDelegate *)[NSApp delegate] managedObjectContext] setUndoManager:self.myUndoManager];
return self.myUndoManager;
}
它沒有工作很好。 (撤消步驟在窗口之間切換時消失。)
這樣做的正確方法是什麼?
現在,它的工作。謝謝。 – WetFish