2010-06-10 20 views
6

Ben yani, temel UIAlertView en yazma bıktım:UIAlertView için bir işlev yazmak mı istiyorsunuz?

UIAlertView *alert = [[UIAlertView alloc] initWith...]] //etc 

yerine bunu yapmanın, ben buttonIndex, ya da her neyse bir uyarı dönebilirsiniz bir "yardımcı" fonksiyonu, tüm bu koymak mümkündür genellikle döner? Basit bir yardımcı Sana başlık için parametreleri yem sanırım fonksiyonu, mesaj için

, sana rağmen bir parametrede delege geçmesi veya bilgi paket alamayacağını emin değilim. pseudo-code

, bu gibi olabilir: Bu konuda

someValueOrObject = Print_Alert(Title="", Message="", Delegate="", Bundle="") // etc 

Herhangi bir yardım çok iyi olurdu.

-(void)alert:(NSString *)title withBody:(NSString *)message firstButtonNamed:(NSString *)firstButtonName { 
    [self alert: title withBody: message firstButtonNamed: firstButtonName withExtraButtons: nil informing: nil]; 
} 

-(void)alert:(NSString *)title withBody:(NSString *)message firstButtonNamed:(NSString *)firstButtonName informing:(id)delegate { 
    [self alert: title withBody: message firstButtonNamed: firstButtonName withExtraButtons: nil informing: delegate]; 
} 

-(void)alert:(NSString *)title withBody:(NSString *)message firstButtonNamed:(NSString *)firstButtonName withExtraButtons:(NSArray *)otherButtonTitles informing:(id)delegate { 
    UIAlertView *alert = [[UIAlertView alloc] 
       initWithTitle: title 
       message: message 
       delegate: delegate 
       cancelButtonTitle: firstButtonName 
       otherButtonTitles: nil]; 
    if (otherButtonTitles != nil) { 
    for (int i = 0; i < [otherButtonTitles count]; i++) { 
     [alert addButtonWithTitle: (NSString *)[otherButtonTitles objectAtIndex: i]]; 
    } 
    } 
    [alert show]; 
    [alert release]; 
} 

Sen bir uyarı gösterecek ve daha sonra böyle bir değer döndürmek bir işlev yazamam: Bu aynı yapmanın hasta geldiğimde, yazdıkları

Teşekkür

+0

Bu daha iyi etiketlenmiş olabilir. 'Objektif-c', 'iphone' vb. Eklemeyi düşünün. –

+0

Üzgünüz. Yardım ettiğin için teşekkür ederim. – zardon

cevap

2

buttonIndex olsa da, bu değer döndürme yalnızca kullanıcı bir düğmeye bastığında ve temsilci bir şey yaptığında gerçekleşir. Başka bir deyişle

, UIAlertView ile bir soru sormak süreci eşzamanlı olmayan bir tanesidir.

yılında
+0

Oh, tamam. Yardım ettiğin için teşekkür ederim! – zardon

14

4.0+ Biraz böyle, bloklar kullanılarak uyarı kodu kolaylaştırabilirsiniz:

CCAlertView *alert = [[CCAlertView alloc] 
    initWithTitle:@"Test Alert" 
    message:@"See if the thing works."]; 
[alert addButtonWithTitle:@"Foo" block:^{ NSLog(@"Foo"); }]; 
[alert addButtonWithTitle:@"Bar" block:^{ NSLog(@"Bar"); }]; 
[alert addButtonWithTitle:@"Cancel" block:NULL]; 
[alert show]; 

Lambda Alert on GitHub bakınız.

+0

Teşekkürler, buna ihtiyacım vardı! –

+0

Çok kaygan bir çözüm. Benim için harika çalıştı. – Kongress

+0

"LambdaAlert" sınıfını kullanmadan bunu yapmak için zaten var mı? – Chris

İlgili konular