2012-01-03 4 views
0

私はObjective Cを使用してiPhoneアプリを構築しています。私のアプリでは、画像上にストロークを描画しています。機能性。NSUndoManagerは、Undo/Redo図面用のiPhoneアプリのredo/undoでスタックを保持しない

私はこれに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]; 
    } 
} 

私が間違っていますどこ私に知らせてください。私はこれについて長い間Googledしていましたが、機能の失敗の正確な原因は見つかりませんでした。

答えて

0

prepareWithInvocationTarget:とオブジェクトをパラメータとして使用することはできません。元に戻す/やり直しスタックのために、capturedImage.imageのコピーを保持しないでください。あなたがそれを解放して新しいイメージに設定しているので、UnDoImage1を呼び出しているだけです。現在はcapturedImage.imageです。

元に戻す/やり直しをしたいことがあれば、私はregisterUndoWithTarget:selector:object:を参照して、capturedImage.imageの参照を保持します。

Scott < -

関連する問題