2014-06-08 13 views
15

ho scrivere questo codice in rapida e Xcode 6errore Alert in rapida

@IBAction func Alert(sender : UIButton) { 
    var alert : UIAlertView = UIAlertView(title: "Hey", message: "This is one Alert",  delegate: nil, cancelButtonTitle: "Working!!") 

    alert.show() 
} 

Xcode non mostra errore di compilazione.

ma nel Simulator l'APP non riesce e restituisce l'errore:

(lldb) 
thread 1 EXC_BAD_ACCESS(code 1 address=0x20) 
+0

Sembra un bug per me. – Adam

+1

trovo la risposta in http://stackoverflow.com/questions/24084521/uialertview-is-not-working-in-swift – rickdecard

risposta

36

C'è un bug nel spessore Swift della convenienza inizializzatore UIAlertView, è necessario utilizzare l'inizializzatore pianura

let alert = UIAlertView() 
alert.title = "Hey" 
alert.message = "This is one Alert" 
alert.addButtonWithTitle("Working!!") 
alert.show() 

Questo codice di stile è più fedele alla Swift Language. L'inizializzatore della convenienza mi sembra più Obiettivo. Solo la mia opinione.

Nota: UIAlertView è deprecato (vedi dichiarazione), ma Swift supporta iOS7 e non è possibile utilizzare UIAlertController su iOS 7

Vista Dichiarazione UIAlertView in Xcode

// UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead 
class UIAlertView : UIView { 

Un avviso solo in Swift iOS 8

var alert = UIAlertController(title: "Hey", message: "This is one Alert", preferredStyle: UIAlertControllerStyle.Alert) 
alert.addAction(UIAlertAction(title: "Working!!", style: UIAlertActionStyle.Default, handler: nil)) 
self.presentViewController(alert, animated: true, completion: nil)