2014-11-16 13 views
13

UIAlert'ım için ayrı bir iptal düğmesi eklemek istiyorum.UIAlertControllerStyle.ActionSheet ile UIAlertController'da İptal Düğmesi

UIActionSheet ile nasıl yapılacağını biliyorum ama UIAlert ile de mümkün olmalı, değil mi?

var sheet: UIActionSheet = UIActionSheet(); 
    let title: String = "..."; 
    sheet.title = title; 
    sheet.delegate = self; 
    sheet.addButtonWithTitle("Cancel"); 
    sheet.addButtonWithTitle("...") 
    sheet.cancelButtonIndex = 0; 
    sheet.showInView(self.view); 

Bu, bir ... düğmesi ve ayrılan bir iptal düğmesine sahip olacaktır.

Yani herkes

var alert = UIAlertController(title: "...", message: "....", preferredStyle: UIAlertControllerStyle.ActionSheet) 

ile bunun nasıl biliyor?

Ben

cevap

27

Onun gerçekten basit ... xcode ve bu soru dilsiz ya da bir şey ise çok özür swift yeniyim ama çalışmak için kullanılan nasıl biraz farklı çalışır. Artık uyarılarınıza "eylemler" ekleyin. Bu eylemler daha sonra aygıttaki düğmelerle temsil edilir. uyarının görevden işleyicinizde o koymayın otomatik öyle yapılır akılda ayı -

alert.addAction(UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Cancel, handler: nil)) 

Above

bir iptal basit düğme için gerekli koddur.

alert.addAction(UIAlertAction(title: "Button", style: UIAlertActionStyle.Default, handler: { action in 
     println("This button now calls anything inside here!") 
    })) 

Umarım sorunuzu anladım ve bu ne soran vardı cevap verir: o zaman aşağıdaki kodu kullanabilirsiniz, bir şey yapar başka düğme oluşturmak isterseniz. Ayrıca aşağıdaki kodu kullanarak "eylemler" her ekledikten sonra alert'ü sunmak olduğunu katacak:

self.presentViewController(alert, animated: true, completion: nil) 

Umut bu yardımcı olur!

+0

Bu işlem çalışırken, UIActionSheet'in yaptığı gibi, iptal düğmesi için ayrı ekleme hakkında sorusunun bir kısmını yanıtlamaz. UIAlerSet denetleyicisi, UIActionSheet gibi iptal düğmesinden önce bir ayırıcı eklemez. – jjxtra

+0

@PsychoDad oldukça haklısınız! - İlk cevap verdiğimde sorumu yanlış anlamış olmalıyım. Özel bir UIAlert yazmadan ayırıcı oluşturmanın bir yolunu bilmiyorum, bu yüzden korkarım bu soruyu değiştiremeyeceğim. –

+0

Stil ile UIAlertActionStyle.Cancel ayarlanmış bir eylem eklerseniz, ayırıcı otomatik olarak eklenir. –

1

Bu kötü kodlu cevap size görürdü olabilir, ama bu deneyerek ihtiyacını karşılamak başardı:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Alert Title" message:@"Alert Message" preferredStyle:UIAlertControllerStyleAlert]; 
UILabel *alertLine = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, alertController.view.frame.size.width, 2)]; 
alertLine.backgroundColor=[UIColor blackColor]; 
[alertController.view.preferredFocusedView addSubview:alertLine]; 
UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]; 
[alertController addAction:ok]; 
[self.navigationController presentViewController:alertController animated:YES completion:nil]; 
+2

Burada sorun, sorunun "hızlı" değil "objektif-c" ile etiketlenmiş olmasıdır. :) – Moritz

2

devam edip belirli bir soru için belirli bir cevap vermek istedik. Kullanıcı bir "iptal" butonunun uygulanmasını, varsayılan bir butonun değil sordu. Aşağıdaki cevaba göz atın!

let alertController = UIAlertController(title: "Select one", message: "Hey! Press a button", preferredStyle: .actionSheet) 

let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) 

alertController.addAction(cancelAction) 

self.present(alertController, animated: true, completion: nil) 
İlgili konular