2012-12-05 67 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

相關問題