2012-04-29 51 views
0

我想按下一个UIBarButtonItem并执行一个操作。当它这样做时,我正在更改BarButtonItem的标题的名称。这样,如果我再次击中它,我想撤消它执行的操作,而不是将所有操作都改回来。这是我的代码的一个例子。撤销IBAction?

- (IBAction)MyAction:(id)sender{ 

if([[MyButton title] isEqualToString:@"Test1"]){ 

//My Action is performed. 

    [MyButton setTitle:@"Test2"]; 
    [[undoManager prepareWithInvocationTarget:self] MyAction:?]; 
    [undoManager setActionName:@"UndoLastAction"]; 


}else if ([[MyButton title] isEqualToString:@"Test2"]){ 

    [MyButton setTitle:@"Test1"]; 
    [[undoManager prepareWithInvocationTarget:self]MyAction:?]; 
    [undoManager setActionName:@"UndoLastAction"]; 
} 

} 
+0

尝试寻找一个纪念品设计模式,我认为它就是你正在寻找 – Novarg 2012-04-29 14:11:09

+0

你有一个很好的链接? – Jason 2012-04-29 14:17:02

+0

@Novarg你愿意提供一个例子吗? – Jason 2012-04-29 18:17:44

回答

0

不要紧,只需重新运行原始代码以“撤消”操作即可。

0

试试吧,如果你想。

以编程方式在viewDidLoad中添加UIButton。,,.

- (void)viewDidLoad 
{ 
MyButton =[UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[MyButton setFrame:CGRectMake(300, 450, 72, 37)]; 
[MyButton setTitle:@"Test1" forState:UIControlStateNormal]; 
[MyButton addTarget:self action:@selector(MyAction:) forControlEvents:UIControlEventTouchUpInside]; 
[self.view MyButton]; 

} 

,并给这样的动作,。,。,

-(IBAction)MyAction:(id)sender 
{ 
    UIButton *temp=(UIButton *)sender; 

    if([email protected]"Test1") 
    { 
     [temp setTitle:@"Test2" forState:UIControlStateNormal]; 

    } 
    else if ([email protected]"Test2") 
    { 
     [temp setTitle:@"Test1" forState:UIControlStateNormal]; 
    } 

} 

我正在学习,。,..,