我正在尝试向我的程序添加NSUndoManager
,但我不确定如何向管理器注册方法?使用:
[myUndoManager registerUndoWithTarget:selector:object:];
如果我有以下方法怎么办:
-(IBAction)tapButton:(id)sender {
myFoo++;
yourFoo++; //incrementing integers
fooFoo++;
}
如何使用撤消管理器注册此方法?选择器(发送者)的对象不是我想要注册的对象。我需要通过一次撤销调用来减少myFoo,yourFoo和fooFoo。
答案 0 :(得分:2)
编写另一个方法-(void) decrementIntegers
并注册如下:
[undoManager registerUndoWithTarget: self selector: @selector( decrementIntegers ) object: nil];
在此方法中,您需要再次注册原始方法以提供重做:
[undoManager registerUndoWithTarget: self selector: @selector( tapButton: ) object: self];
但更好的方法是使用整数的访问器并在那里撤消注册。像这样:
- (void) setMyFoo: (int) newMyFoo;
{
if (myFoo != newMyFoo) {
[[undoManager prepareWithInvocationTarget: self] setMyFoo: myFoo];
myFoo = newMyFoo;
}
}