2012-08-31 1 views
0

UIActionSheet에서 취소 버튼을 누를 때마다 메소드가 실행됩니다. 왜 모든 코드를 여러 번 확인했는지는 모르겠지만 여전히 문제를 볼 수는 없습니다. 그것을 찾도록 도와 줄 수 있습니까?UIActionSheet 취소 버튼 실행 방법

-(IBAction)moreOptions 
{ 

    giftTitle = self.title; 

    if(![giftTitle isEqualToString:@"bla"]) 
    { 
     actionSheet = [[UIActionSheet alloc]initWithTitle:giftTitle 
                  delegate:self 
                cancelButtonTitle:@"Back" 
               destructiveButtonTitle:nil 
                otherButtonTitles:@"Send via email", 
            @"Read in Wikipedia" 
            , nil]; 
    } 
    else 
    { 
     actionSheet = [[UIActionSheet alloc]initWithTitle:giftTitle 
               delegate:self 
             cancelButtonTitle:@"Back" 
            destructiveButtonTitle:nil 
             otherButtonTitles:@"Send via email", 
         @"Read in Wikipedia", @"Pineapple mode" 
         , nil]; 

    } 
    actionSheet.actionSheetStyle = UIActionSheetStyleDefault; 
    [actionSheet showInView:self.view.window]; 

} 

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 

    // выстраеваем дальнейшие действия кнопок 

     switch (buttonIndex) 
     { 
      case 0: 
       [self showPicker]; 
      break; 

      case 1: 
       [self goWiki]; 
      break; 

      case 2: 
       [self showPineapple]; 
      break; 

      default: 
      break; 

     } 

} 

따라서 showPineapple 메서드가 실행됩니다. 도와주세요 !

답변

0

당신이 뭔가를 구현해야 메시지를 핸들러는 :

case 2: 
    if (actionSheet.tag == 20) 
     [self showPineapple]; 
    break; 

[self showPineapple] 만,953에서 실행되는 것을 의미합니다 3230 시나리오에서는 if 시나리오에서 아무 것도 발생하지 않습니다. else 시나리오에서 buttonIndex 3에 대해 아무 것도 일어나지 않을 것입니다 (여기서 취소 버튼은 실제로 인덱스 3입니다).

+0

그래, 그게 효과가! 고맙습니다 ! 흥미 롭습니다. 태그 속성에 대해 들어 본 적이 없습니다. – SmartTree

1

예 작업 시트의 취소 버튼을 누르면 마지막 색인과 함께 항상 전화를 걸 수 있습니다.

여러 액션 시트를 구현하는 경우 태그 값으로 사용하십시오.

이 각 UIActionSheet에 대해 고유 한 태그를 추가 할 ifelse 섹션을 변경

: clickedButtonAtIndex :

if(![giftTitle isEqualToString:@"bla"]) { 
    actionSheet = [[UIActionSheet alloc]initWithTitle:giftTitle 
              delegate:self 
            cancelButtonTitle:@"Back" 
           destructiveButtonTitle:nil 
            otherButtonTitles:@"Send via email", @"Read in Wikipedia" , nil]; 
    actionSheet.tag = 10; 
} else { 
    actionSheet = [[UIActionSheet alloc]initWithTitle:giftTitle 
              delegate:self 
            cancelButtonTitle:@"Back" 
           destructiveButtonTitle:nil 
            otherButtonTitles:@"Send via email", @"Read in Wikipedia", @"Pineapple mode", nil]; 

    actionSheet.tag = 20; 
} 

는 그 다음 actionSheet의 태그를 찾아

+0

고마워요! 그래서 그 안에 아무것도 넣지 않은 경우 3을 추가해야합니까? – SmartTree

+0

destructiveButtonTitle에 @ "Send via email"을 넣을 수 있습니다 – Rajneesh071

+0

destructiveButton 인덱스는 0입니다. – Rajneesh071