2012-12-05 69 views
0

我创建了一个没有核心数据的应用程序。 该应用程序有很多功能,例如用手势,颜色和文本操纵视图。是否可以在没有核心数据的情况下使用NSUndoManager?

我想要做的是使用撤消和重做功能。
我读了关于核心数据和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")]; 
} 

,并说明这是由一个点击的按钮叫Undo方法这里:

-(void)undo: (id) sender{ 

    [aView.undoManager undo]; 
    [[self undoManager] undo]; 
} 

如果我插入一个if子句询问是否undoManag er.canUndo == YES,它返回的是撤消管理器无法撤销。
这意味着撤消管理器是零,但为什么? 我错过了什么吗?

回答

0

是的,您可以使用与Core Data分开的NSUndoManager。大量的信息out there关于NSUndoManager。

你需要做更多的阅读和理解NSUndoManager可以和你不能这样做,看看如何将适合在UIViews等也许忘了核心数据的时刻,专心NSUndoManager

“因为我想要做的一切......不起作用” - 如果您遇到特定问题,可以在此处就StackOverflow提出关于它们的问题。如果您只说“不起作用”,我们无法帮助您解决具体问题。

除了具体的NSUndoManager之外,还有与撤消和重做操作相关的设计模式,例如命令模式。见例如Best design pattern for "undo" feature

+0

谢谢。我编辑了我的帖子.. – Studie

+0

只是代码是不够的 - 你需要说你会发生什么,发生了什么。发布允许查看问题的正确代码片段的技巧很好。 – occulus

+0

你有没有把NSLogs看到什么叫什么时候? – occulus

相关问题