我創建了一個沒有核心數據的應用程序。 該應用程序有很多功能,例如用手勢,顏色和文本操縱視圖。是否可以在沒有核心數據的情況下使用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,它返回的是撤消管理器無法撤銷。
這意味着撤消管理器是零,但爲什麼? 我錯過了什麼嗎?
謝謝。我編輯了我的帖子.. – Studie
只是代碼是不夠的 - 你需要說你會發生什麼,發生了什麼。發佈允許查看問題的正確代碼片段的技巧很好。 – occulus
你有沒有把NSLogs看到什麼叫什麼時候? – occulus