2010-09-01 88 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

相關問題