2011-06-08 27 views
8

Bir UIAlertIOS: iki farklı delege yöntemiyle iki UIAlert

UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"ok" 
                 message:@"Canc?" 
                 delegate:self 
               cancelButtonTitle:@"OK" 
               otherButtonTitles:@"Annul", nil]; 
[alertView show]; 
[alertView release]; 

ve onun temsilci yöntemi var:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 

if(buttonIndex == 0)//OK button pressed 
{ 
    //do something 
} 
else if(buttonIndex == 1)//Annul button pressed. 
{ 
    //do something 
} 

ve hepsi tamam ama başka bir alertview örneğim varsa "alertViewOne", bu alertViewOne kendi temsilci yöntemi ve bunu istiyorum ilk uyarı görüşünün temsilci yöntemini kullanmamalı; Kodumu nasıl değiştiririm?

cevap

20

Her Uyarı görünümüne bir etiket koyun ve hangi iletiyi gönderdiğinizi kontrol edin.

alertView.tag=0; 

Sonra

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex    { 
    if(alertView.tag==0){ 

    if(buttonIndex == 0)//OK button pressed 
    { 
    //do something 
    } 
    else if(buttonIndex == 1)//Annul button pressed. 
    { 
    //do something 
    } 
}else{ 
    if(buttonIndex == 0)//OK button pressed 
    { 
    //do something 
    } 
     else if(buttonIndex == 1)//Annul button pressed. 
    { 
    //do something 
    } 
    } 

Güncelleme bloklar kullanılarak daha iyi bir çözüm yoktur.

Örneğin bu proje bakabilirsiniz: UIAlertView-Blocks

Ve bildiğim kadarıyla iOS8 bloklarla yerli uyarılarla gelecek biliyorum.

+0

ah tamam ... çok – CrazyDev

+0

etiketini nerede ayarlayabilirim? ViewDidLoad'da mı? Uyarı görünümünü oluşturduğunuzda – CrazyDev

+0

. tahsisin hemen ardından. – shannoga

İlgili konular