我创建了一个没有核心数据的应用程序。 该应用程序具有许多功能,例如使用手势,颜色和文本操作视图。
我想要做的是使用撤消和重做功能 我阅读了有关Core Data和NSUndoManager的所有内容,我有理解它的问题,因为我试图做的一切......都不起作用。
我的问题是:是否可以在没有核心数据的情况下使用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是零,但为什么呢?
我错过了什么吗?
答案 0 :(得分:0)
是的,您可以与核心数据分开使用NSUndoManager
。关于NSUndoManager的大量信息out there。
你需要做更多的阅读并理解NSUndoManager
可以和不能为你做什么,看看它如何适合UIViews等。也许暂时忘记核心数据并专注于{{1 }}
“因为我要做的一切......不起作用” - 如果您遇到特定问题,可以在StackOverflow上询问有关它们的问题。如果您只说“它不起作用”,我们无法帮助您了解具体细节。
除了NSUndoManager
的细节之外,还有与撤消和重做操作相关的设计模式,例如命令模式。参见例如Best design pattern for "undo" feature