2013-03-31 1 views
1

Приложение 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; 
} 

Это не сработало очень хорошо. (Отмена шагов исчезла при переключении между окнами.)

Каков правильный способ сделать это?

ответ

Смежные вопросы