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



我创建了一个没有核心数据的应用程序。该应用程序具有许多功能,例如使用手势,颜色和文本操作视图。

我想做的是使用撤消和重做功能。
我阅读了有关Core Data和NSUndoManager的所有内容,但我很难理解它,因为我正在尝试做的一切都...不工作。

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

一个操作可以更改我的对象,称为 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 子句询问 undoManager.canUndo == 是,它会返回 undoManager 无法撤消。
这意味着撤消管理器为零,但为什么呢?我错过了什么吗?

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

你需要做更多的阅读,了解NSUndoManager能为你做什么和不能做什么,看看它如何适应UIViews等。也许暂时忘记核心数据,专注于NSUndoManager.

"因为我试图做的一切...不要工作" - 如果你有特定的问题,你可以在StackOverflow上提出关于它们的问题。如果您只说"它不起作用",我们无法为您提供细节帮助。

除了NSUndoManager的细节之外,还有与撤消和重做操作相关的设计模式,例如命令模式。例如,请参阅"撤消"功能的最佳设计模式。

相关内容

  • 没有找到相关文章

最新更新