2011-03-02 31 views
12

İptal düğmesinin bir UIActionSheet'e basıldığını nasıl belirleyebilirim?İptal Düğmesi ve UIActionSheet ile İlgili Sorunlar

Benim UIActionSheet böyle kurulur:

-(IBAction)fileButtonPressed 
{ 
    UIActionSheet *mymenu = [[UIActionSheet alloc] 
          initWithTitle:@"Select Folder" 
          delegate:self 
          cancelButtonTitle:@"Cancel" 
          destructiveButtonTitle:nil 
          otherButtonTitles:nil]; 

    for (i=0; i<3; i++) 
    { 
     [mymenu addButtonWithTitle:@"Button Name"]; 
    } 

    [mymenu showInView:self.view]; 

} 

Ben iptal düğmesi ve seçilen ilk düğmeye ayırt edemez ki var bir sorun.

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    NSString *option = [actionSheet buttonTitleAtIndex:buttonIndex]; 

    //buttonIndex == 0 if the cancel button is pressed or 
    //if the first item is pressed. 
} 

Bunu kurmanın daha iyi bir yolu var mı?

cevap

31

Bu ipucu, otomatik iptal düğmesini kullanmamak, ancak kendiniz eklemek için ortaya çıkıyor.

Diğer hafif yakalama, iptal düğmesini en sonunda değil, en sonunda eklemektir.

-(IBAction)fileButtonPressed 
{ 
    UIActionSheet *mymenu = [[UIActionSheet alloc] 
          initWithTitle:@"Select Folder" 
          delegate:self 
          cancelButtonTitle:nil 
          destructiveButtonTitle:nil 
          otherButtonTitles:nil]; 
    for (int nb=0; nb<3; nb++) 
    { 
     [mymenu addButtonWithTitle:@"Button Name"]; 
    } 

    mymenu.cancelButtonIndex = [mymenu addButtonWithTitle: @"Cancel"]; 

    [mymenu showInView:self.view]; 
} 

bu yanıt için stackoverflow giriş.

+0

Harika, Harika, Teşekkürler – shannoga

+1

UIActionSheet, iOS'un en ürkütücü kod parçası olmalı – bugfixr

16
if (buttonIndex == actionSheet.cancelButtonIndex) 
{ 
    // Handle cancel action 
} 

UIActionSheet da karşılaştırmak için destructiveButtonIndex ve firstOtherButtonIndex gibi özellikleri vardır.

+1

Maalesef, sorumu doğru bir şekilde sorduğumu sanmıyorum. Sorun, listedeki ilk düğmenin cancelButtonIndex eylemiyle karıştırılan sıfırın bir buttonIndex değerini döndürmesidir. Neyi yanlış yaptığımı biliyor musun? Teşekkürler. – iphaaw

+0

Doğru yol gibi görünüyor, böylece OS, iptal düğmesi (farklı gruplama, stil, vb) için istediği tüm özel şeyleri yapabilir. – eselk

+0

Bu, tam olarak doğru iptal endeksi değerini döndürür. – tounaobun

1

bu

eklemek [MyMenu showInView: self.parentViewController.tabBarController.view];