2011-12-26 3 views
0

Xcode 3에서 시작된 MacOS 용 코어 데이터 프로젝트가 Xcode 4에서 제대로 작동하지 않습니다. 특히 실행 취소/다시 실행 관리에 적합합니다.
하지만 Xcode 4에서 새 코어 데이터 프로젝트를 시작한 후 실행 취소 문제가 발생했습니다. UndoRedo 메뉴 항목은 Xcode 3에서 만든 프로젝트에서와 같이 첫 번째 응답자의 Undo:\Redo: 메서드에 연결됩니다. 메뉴는 항상 비활성화되었습니다.
메뉴 항목의 Enabled 속성에서 바인딩을 managedObjectContext.undoManager.canUndo/canRedo으로 만들었습니다. 사용자가 개체를 변경할 때 메뉴가 활성화되지만 실행 취소 작업은 아무 효과가 없습니다. 메뉴는 사용 가능 상태로 유지되지만 실행 취소는 수행되지 않았습니다. . 이런 식으로Xcode 4의 코어 데이터 및 실행 취소 액션

- (IBAction)myUndoAction:(id)sender 
{ 
    [[[self managedObjectContext] undoManager] undo]; 
} 

- (IBAction)myRedoAction:(id)sender 
{ 
    [[[self managedObjectContext] undoManager] undo]; 
} 

(그리고 Enable 속성 : 실행 취소를 얻기
유일한 방법은 또 다른 AppDelegate에 새로운 IBActions 한을 대신 먼저 응답자의 메뉴 항목의 연결을 끊고했다 canUndocanRedo에 바인딩 됨) 두 메뉴 항목 모두 Core Data 객체에 대해 예상대로 작동합니다. 어쨌든 Xcode 3에는이 문제가 없었습니다.

다른 사람이 Xcode 4에서이 문제를 겪고 있습니까? 오래된 템플릿 문제를 피하기 위해 Xcode 4.2.1을 처음부터 다시 설치했지만, 같은 문제가 다시 발생합니다.
Xcode 3도 설치하고 싶지 않습니다. 단지 작동중인 프로젝트로 시작한 다음 프로젝트를 Xcode 4로 이전하십시오!
내가 봤 거든 내가 아는 모든 포럼, 애플 토론을 들여다 보았다. 그러나 나는 아무것도 찾지 못했다. 나는 10.7.2에있다.


UPDATE 조치가 우선 응답자에 연결되어 있어야하므로 실행 취소/실행 취소/재실행 항상 ManagedObjectContext에서 NSUndoManager를 호출 같은 다른 작업을 중단 할 AppDelegate에에 다시 실행 연결하여
.
처음부터 핵심 데이터 프로젝트를 생성하려면 Xcode 3.2를 고수하고 Xcode 4에서 엽니 다 (템플릿에서 버그가있는 곳을 발견하면 ...)

답변

2

나는 내 윈도우 컨트롤러가 NSWindowDelegate 프로토콜을 구현하고 windowWillReturnUndoManager : 응용 프로그램의 델리게이트를 중계하도록함으로써이 문제를 해결할 수 있었다.

+2

감사합니다. Tyler, 해결되었습니다! Xcode 4의 CoreData 템플릿이 AppDelegate로 설정되지 않은 주 창 대리자와 함께 제공되는 것으로 나타났습니다. 아마도 windowWillReturnUndoManager가 호출되지 않은 이유 일 수 있습니다. –

+0

@ max.me 동일한 문제가 있었는데 인터페이스 위임자의 NIB 파일 인 "App Delegate"로 내 위임자를 설정 한 후에 작동합니다. 그러나 지금 나는 또한 여기에 무슨 일이 일어나고 있는지 알고 싶었습니다. 아무도 설명 할 수 있습니까? – MartinW