如何使用 NSUndoManager 实现撤销?
我正在尝试将 NSUndoManager
添加到我的程序中,但我不确定如何向管理器注册方法?使用:
[myUndoManager registerUndoWithTarget:selector:object:];
如果我有以下方法怎么办:
-(IBAction)tapButton:(id)sender {
myFoo++;
yourFoo++; //incrementing integers
fooFoo++;
}
如何向撤消管理器注册此方法?选择器(发送者)的对象不是我要注册的。我需要通过一次撤消调用来减少 myFoo、yourFoo 和 fooFoo。
I am trying to add an NSUndoManager
to my program but I am not sure how to register the methods with the manager? using :
[myUndoManager registerUndoWithTarget:selector:object:];
what if I have the following method:
-(IBAction)tapButton:(id)sender {
myFoo++;
yourFoo++; //incrementing integers
fooFoo++;
}
How can I register this method with the undo manager? The object of the selector (sender) is not what I want to register. I need to decrement myFoo, yourFoo, and fooFoo with a single undo call.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
编写另一个方法
-(void) decrementIntegers
并像这样注册:在这个方法中,您需要再次注册原始方法以提供重做:
但是更好的方法是使用您的访问器整数并撤消其中的注册。像这样的事情:
Write another method
-(void) decrementIntegers
and register that like this:In this method you need to register your original method again to provide redo:
But a better way to do this would be to use accessors for your integers and do undo registering in there. Something like this: