2012-01-03 3 views
0

Objective C로 iPhone 응용 프로그램을 구축하고 있습니다. 내 응용 프로그램에서 이미지에 선을 그려 넣고 실행 취소 및 다시 실행 기능성.NSUndoManager가 Undo/Redo 도면 용 iPhone 응용 프로그램에서 다시 실행/실행 취소로 스택을 유지하지 않음

나는 이것을 위해 NSUndoManager을 사용했습니다. 이 기능을 사용하여 한 수준 아래로 도면을 실행 취소 할 수는 있지만 최소 요구 사항 (최소 10 단계 이상)에서는 도면을 실행 취소해야합니다. 이미 setLevelsOfUndo을 10으로 설정했지만 작동하지 않습니다.

나는 다음과 같은 코드를 사용하고 있습니다 :

- (void)UnDoImage1:(UIImage*)image 
{ 
    if (capturedImage.image != image) 
    { 
     [self.managedObjectContext.undoManager undo]; 
     [[self.managedObjectContext.undoManager prepareWithInvocationTarget:self] UnDoImage1:capturedImage.image]; 
     [capturedImage release]; 
     capturedImage.image = [image retain]; 
    } 
} 

내가 잘못 어딘지 알려 주시기 바랍니다. 나는 이것을 오랫동안 봤지만 기능의 실패의 정확한 원인을 찾지 못했습니다.

답변

0

prepareWithInvocationTarget:에 개체를 매개 변수로 사용할 수 있다고 생각하지 않습니다. 실행 취소/다시 실행 스택에 대해 capturedImage.image 사본을 보관하지 않을 것입니다. 그래서 당신이 그것을 풀어 놓고 새로운 이미지로 설정했기 때문에 UnDoImage1을 호출했을 것입니다 : 현재는 capturedImage.image

당신이 원상태로 되 돌리거나 다시하기를 원한다면, 그러면 나는 registerUndoWithTarget:selector:object:을보고 capturedImage.image이라는 참조를 붙잡습니다.

스콧 < -

관련 문제