Приложение My Core Data (не основано на документе) имеет два окна. Каждое окно содержит табличное представление с (разными) данными из того же 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