NSManagedObjectContext와 연결된 기본 제공 NSUndoManager를 통해 실행 취소/다시 실행을 지원하는 핵심 데이터 기반 문서 기반 응용 프로그램이 있습니다. 코어 데이터 내에서 수많은 작업을 수행하는 몇 가지 작업을 설정하고 beginUndoGrouping
/endUndoGrouping
을 통해 이러한 모든 작업을 실행 취소 그룹으로 랩핑하고 NSUndoManager가 처리합니다.코어 데이터가있는 NSUndoManager - 다시 실행되지 않음
실행 취소가 정상적으로 작동합니다. 몇 가지 연속적인 작업을 수행 할 수 있으며 각각의 작업을 연속적으로 실행 취소하고 앱의 상태가 올바르게 유지됩니다. 그러나 "다시 실행"메뉴 항목은 절대로 사용할 수 없습니다. 즉, NSUndoManager가 다시 실행할 항목이 없다는 것을 메뉴에 알리는 것입니다.
NSUndoManager가 실행 취소 된 항목에 대해 겉보기에 잊어 버리고 재실행을 허용하지 않는 이유가 궁금합니다.
내가 언급해야 할 것은 문서를 연/생성 한 후에 실행 취소 등록을 사용하지 않도록 설정한다는 것입니다. 작업을 수행 할 때 enableUndoRegistration
, beginUndoGrouping
으로 전화를 걸어 동작을 수행 한 다음 processPendingChanges
, setActionName:
, endUndoGrouping
및 마지막으로 disableUndoRegistration
으로 전화를 겁니다. 이렇게하면 특정 동작 만 실행 취소 할 수 있으며,이 외의 다른 데이터 변경 사항은 NSUndoManager에 알려지지 않습니다. 이것은 문제의 일부일 수 있습니다. 그렇다면 왜 그것이 재실행에 영향을 미치는지 궁금합니다.
미리 감사드립니다. 나는이 문제를 해결 한