帮助NSUndoManager

好的,所以我想添加在我的应用程序中撤消某些操作的功能。我打算用我自己的原型或其他东西来创造一种方法,但后来我发现了
NSUndoManager
。我想使用内置的基础方式,但我似乎无法弄明白。我需要撤消多个骰子滚动,所以如果我可以存储以前的卷,作为
NSArray
中的对象,可能是最好的。我可以使用
NSMutableString
,但阵列将是首选。 然后我知道你可以动摇撤消,但我宁愿有一个按钮。这些一直给我带来的麻烦。我在下面列出了我的尝试。这些都没有奏效。任何帮助,将不胜感激。 在viewDidLoad中:
undoManager = [[NSUndoManager alloc] init];
然后在掷骰子的方法中,我试过:
   [[undoManager prepareWithInvocationTarget:self] undoButton];
    [[undoManager prepareWithInvocationTarget:self] 
    [[undoManager prepareWithInvocationTarget:self] setString:[NSString stringWithFormat:@"%i", dice1num]];

setStrings:[NSArray arrayWithObjects:[NSString stringWithFormat:@"%i", dice1num]
    [NSString stringWithFormat:@"%i", dice1num],
    [NSString stringWithFormat:@"%i", dice1num],
    [NSString stringWithFormat:@"%i", dice1num],
    [NSString stringWithFormat:@"%i", dice1num], nil]];
[[undoManager prepareWithInvocationTarget:@selector()];
[undoManager setActionName:@"A roll"];
然后是链接到撤消按钮的IBAction:
-(IBAction)undoButton{
           [undoManager undo];
}
提前致谢     
已邀请:
我认为你已经得到了
NSUndoManager
错误的功能。撤消管理器就像是一堆调用,它们可以反转您刚才所做的事情。所以原则上你的想法是正确的,在你的情况下使用一个集合对象
NSArray
来存储多个撤消步骤。不幸的是,它有点不同。
NSUndoManager
如何运作 撤消管理器通过在内存中维护一堆撤消步骤来工作。对于您的案例骰子卷中的每个步骤,您要撤消使用
- (void)registerUndoWithTarget:self selector:@selector(setMyObjectTitle:) object:currentTitle
方法注册调用对象。你为每个骰子掷骰都这样做。一次只能注册一个操作。 对于撤消,您可以像调用undo方法一样调用undo方法,然后发生的事情是undo manager弹出撤消堆栈的操作并执行它。 您的主要错误是尝试重新发明撤消管理器的工作方式。不要注册数组,一次只使用一个骰子。 Apple的撤消架构手册     

要回复问题请先登录注册