Core Data なしでアプリを作成しました。このアプリには、ジェスチャー、色、テキストによるビューの操作など、多くの機能があります。
私がやりたいのは、元に戻す機能とやり直し機能を使用することです。
Core Data と NSUndoManager に関するすべてを読みましたが、理解するのに問題があります。私がやろうとしていることがすべてうまくいかないからです。
私の質問は: Core Data なしで NSUndoManager を使用することは可能ですか?
そして:ビューの元に戻すにはどうすればよいですか?
1 つの操作で aView (UIImageView) というオブジェクトを変更できます undoManager に情報を登録します
編集
- (IBAction)rotationDetected:(UIRotationGestureRecognizer *)gestureRecognizer {
static CGFloat initialRotation;
if (gestureRecognizer.state == UIGestureRecognizerStateBegan){
initialRotation = atan2f(gestureRecognizer.view.transform.b, gestureRecognizer.view.transform.a);
}
CGFloat newRotation = initialRotation + gestureRecognizer.rotation;
aView.transform = CGAffineTransformMakeRotation(newRotation);
//undo
[self.undoManager registerUndoWithTarget:self selector:@selector(rotationDetected:)object:aView];
[self.undoManager setActionName:NSLocalizedString(@"viewChanged",@"title undo")];
}
クリックされたボタンによって呼び出される元に戻すメソッドは、次のとおりです。
-(void)undo: (id) sender{
[aView.undoManager undo];
[[self undoManager] undo];
}
undoManager.canUndo == YES かどうかを尋ねる if-clause を挿入すると、undoManager は元に戻せないことが返されます。
これは、undoManager が nil であることを意味します。しかし、なぜでしょうか? 私は何か見落としてますか?