2010-09-01 87 views
1

我想将NSUndoManager添加到我的程序中,但我不确定如何向管理器注册方法?使用:如何使用NSUndoManager实现撤消?

[myUndoManager registerUndoWithTarget:selector:object:]; 

如果我有以下方法:

-(IBAction)tapButton:(id)sender { 
    myFoo++;  
    yourFoo++; //incrementing integers 
    fooFoo++; 
} 

我怎样才能注册此方法与撤消管理器?选择器(发件人)的对象不是我想要注册的。我需要用一次撤消调用来减少myFoo,yourFoo和fooFoo。

回答

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; 
    } 
} 
+1

是的,工作就像一个魅力!日Thnx – RAV 2010-09-01 13:01:24

相关问题