2012-04-29 4 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

+0

좋은 링크가 있습니까? – Jason

+0

@ 노바그 예제를 기꺼이 제공하겠습니까? – Jason

답변

0

원래 코드를 다시 실행하기 만하면 작업을 "실행 취소"하는 것이 더 쉽습니다.

0

원하는 경우 시도해보십시오.

UButton을 프로그래밍 방식으로 viewDidLoad. ,,에 추가하십시오.

- (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]; 
    } 

} 

내가 배우고 있어요., ...,