我正在尝试按下UIBarButtonItem并执行一个操作,它确实是这样做的。当发生这种情况时,我会更改BarButtonItem标题的名称。这样,如果我再次点击它,我想撤消它执行的操作,而不是编写所有代码来更改它。下面是我的代码示例。
- (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"];
}
}发布于 2012-04-30 02:24:16
不要紧,只需重新运行原始代码来“撤消”操作就更容易了。
发布于 2012-04-30 12:55:10
如果你想试试的话。
以编程方式在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(temp.titleLabel.text==@"Test1")
{
[temp setTitle:@"Test2" forState:UIControlStateNormal];
}
else if (temp.titleLabel.text==@"Test2")
{
[temp setTitle:@"Test1" forState:UIControlStateNormal];
}
}我正在学习,..,..
https://stackoverflow.com/questions/10372693
复制相似问题