2014-07-04 25 views
6

'daki düğmelere eylemler nasıl eklenir Başlangıç ​​seviyesi programlayıcısıyım. Alert üzerindeki düğmelere eylem eklemeye çalışıyorum, ancak çalışmıyor. Sadece uyarı düğmesi seçiminin etiket içindeki metni değiştirip değiştiremeyeceğini test etmek istiyorum, fakat işe yaramıyor. Tabii ki uyarı ve butonları iyi görebiliyorum ama butona tıkladıktan sonra hiçbir şey olmuyor.Swift uyarısı

alertTest.delegate = self 

UIAlertView onun temsilci üzerinde yöntemleri bazı şeyleri başarmak veya olayların bildirmek için çağırması anlamına gelir delegate pattern kullanır:

@IBOutlet var statusLabelAlert : UILabel 

var alertTest = UIAlertView() 

@IBAction func alertButton(sender : AnyObject) { 

    alertTest.message = "Select one!" 
    alertTest.addButtonWithTitle("1st") 
    alertTest.addButtonWithTitle("2nd") 
    alertTest.addButtonWithTitle("3rd") 
    alertTest.title = "Test Alert" 
    alertTest.show() 

} 
func alertView(alertView: UIAlertView!, clickedButtonAtIndex buttonIndex: Int){ 
    switch buttonIndex{ 
    case 0: 
     statusLabelAlert.text = "1st" 
    case 1: 
     statusLabelAlert.text = "2nd" 
    case 2: 
     statusLabelAlert.text = "3rd" 
    default: 
     statusLabelAlert.text = "error" 
    } 

} 

cevap

8

TıklananButtonAtIndex yönteminiz mi arıyor? Bir kesme noktası koyun ve kodu ayıklayın. alertView temsilcisini ayarlamıyorsunuz. Eğer fiil yapmak istemiyorsanız

@IBOutlet var statusLabelAlert : UILabel 

var alertTest = UIAlertView() 
alertTest.delegate = self //set the delegate of alertView 

@IBAction func alertButton(sender : AnyObject) { 

alertTest.message = "Select one!" 
alertTest.addButtonWithTitle("1st") 
alertTest.addButtonWithTitle("2nd") 
alertTest.addButtonWithTitle("3rd") 
alertTest.title = "Test Alert" 
alertTest.show() 

} 
func alertView(alertView: UIAlertView!, clickedButtonAtIndex buttonIndex: Int){ 
switch buttonIndex{ 
case 0: 
    statusLabelAlert.text = "1st" 
case 1: 
    statusLabelAlert.text = "2nd" 
case 2: 
    statusLabelAlert.text = "3rd" 
default: 
    statusLabelAlert.text = "error" 
} 

} 
3

Sen Uyarı görünümü temsilci belirlemek zorunda. UIAlertView ile, bu olaylardan biri, kullanıcının bir düğmeye basmasıdır. Bir kullanıcının musluğu hakkında kimlerin söyleyeceğini bilmek için uyarı görünümü için, UIAlertViewDelegate protokolünü uygulayan bir temsilci belirtmeniz gerekir. Kodunuz protokolü uygular ancak hiçbir zaman temsilci olmak istediğinizi bildirmez, böylece yöntem çağrısını asla alamazsınız.

1

Bu iOS 8 için ise UIAlertController ve UIAlertAction konumuna geçmelisiniz. UIAlertAction düğmenin yapması gerekenleri içerir.

3
@IBOutlet var statusLabelAlert : UILabel 
var alertTest = UIAlertView() 
@IBAction func alertButton(sender : AnyObject) 
{ 
    alertTest.delegate = self 
    alertTest.message = "Select one!" 
    alertTest.addButtonWithTitle("1st") 
    alertTest.addButtonWithTitle("2nd") 
    alertTest.addButtonWithTitle("3rd") 
    alertTest.title = "Test Alert" 
    alertTest.show() 

} 

func alertView(alertView: UIAlertView!, clickedButtonAtIndex buttonIndex: Int) 
{ 
    switch buttonIndex 
    { 
     case 0: 
     statusLabelAlert.text = "1st" 
     case 1: 
     statusLabelAlert.text = "2nd" 
     case 2: 
     statusLabelAlert.text = "3rd" 
     default: 
     statusLabelAlert.text = "error" 
    } 
} 
1
IBOutlet var statusLabelAlert : UILabel 

@IBAction func alertButton(sender : AnyObject) { 

let alert = UIAlertController(title: "Alert", message: "This is an Alert", preferredStyle: UIAlertControllerStyle.Alert) 

alert.addAction(UIAlertAction(title: "1st", style: UIAlertActionStyle.Default, handler: { (action: UIAlertAction!) in 
statusLabelAlert.text = "1st" 
})) 

alert.addAction(UIAlertAction(title: "2nd", style: UIAlertActionStyle.Default, handler: { (action: UIAlertAction!) in 
statusLabelAlert.text = "2nd" 
})) 

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

} 

düğmeye basıldığında:

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