我创建了一个没有核心数据的应用程序。该应用程序具有许多功能,例如使用手势、颜色和文本操作视图。
我想要做的是使用撤消和重做功能。
我阅读了有关 Core Data 和 NSUndoManager 的所有内容,但我无法理解它,因为我尝试做的所有事情......都行不通。
我的问题是:是否可以在没有 Core Data 的情况下使用 NSUndoManager?
并且:我怎样才能实现视图的撤消?
一个操作可以改变我的对象叫做 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];
}
如果我插入一个 if 子句询问是否 undoManager.canUndo == YES,它会返回 undoManager 不能撤消。
这意味着 undoManager 为 nil,但为什么呢?我错过了什么?