Ios4 是否可以在没有核心数据的情况下使用NSUndoManager?

Ios4 是否可以在没有核心数据的情况下使用NSUndoManager?,ios4,uigesturerecognizer,nsundomanager,Ios4,Uigesturerecognizer,Nsundomanager,我创建了一个没有核心数据的应用程序。 该应用程序有很多功能,比如通过手势、颜色和文本操纵视图 我要做的是使用撤销和重做功能。 我阅读了所有关于核心数据和NSUndoManager的内容,我很难理解它,因为我所做的一切……都不起作用 我的问题是:是否可以在没有核心数据的情况下使用NSondomanager? 和:如何实现视图的撤消 一个操作可以更改名为aView(UIImageView)的对象 我在管理器中注册信息 编辑 - (IBAction)rotationDetected:(UIRotati

我创建了一个没有核心数据的应用程序。 该应用程序有很多功能,比如通过手势、颜色和文本操纵视图

我要做的是使用撤销和重做功能。
我阅读了所有关于核心数据和NSUndoManager的内容,我很难理解它,因为我所做的一切……都不起作用

我的问题是:是否可以在没有核心数据的情况下使用NSondomanager?
和:如何实现视图的撤消

一个操作可以更改名为aView(UIImageView)的对象 我在管理器中注册信息

编辑

- (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子句询问If undoManager.canUndo==YES,它将返回undoManager cannotundo
这意味着undoManager为零,但为什么?
我遗漏了什么吗?

是的,您可以将
NSUndoManager
与核心数据分开使用。关于NSUndoManager的大量信息

您需要进行更多的阅读,了解
NSUndoManager
能为您做什么和不能为您做什么,并了解这将如何与UIView等相适应。或许暂时忘记核心数据,集中精力于
NSUndoManager

“因为我想做的一切……都不起作用”——如果你有具体的问题,你可以在StackOverflow网站上提问。如果你只说“它不起作用”,我们就无法在细节上帮助你


除了
NSUndoManager
的细节之外,还有一些与撤消和重做操作相关的设计模式,例如命令模式。请参见,例如……

仅仅编写代码也是不够的——您需要说明您预期会发生什么,发生了什么。发布正确的代码片段是一门很好的艺术,它可以让问题被发现。你有没有输入nslog来查看调用的内容和时间?因此我不理解。我所有的东西都是用我的代码写的,但它不起作用。我错过什么了吗?可能在其他类中,例如在appdelegate中?