我一直在尝试使用 NSUndoManager 类在我的一个应用程序中设计撤消/重做功能并看到一些设计困难。在我的应用程序中,我只有一种方法
-(IBAction) addLastBall:(Ball *)ball
因此,当用户在 UI 中选择一个按钮时,我将一个球对象添加到我的数组列表中。但是,我没有任何移除球的操作按钮,这是 UI 工作流程的设计,无法更改。因此,为了实现撤消,我在 addLastBall 方法中调用了以下代码
[undoManager registerUndoWithTarget:self selector:@selector(removeBall:) object:ball];
完成此操作后,当用户尝试执行撤消操作时,将使用球对象调用 removeBall 方法。现在一切都很好。但是,我现在不确定如何处理重做部分,当用户尝试重做时,我不确定会调用哪个方法,因为我需要添加用户刚刚使用撤消操作删除的球对象。任何见解都会非常有帮助。
非常感谢。