Prezentuję UIAlertView
użytkownikowi a i nie mogę wymyślić, jak napisać procedurę obsługi. To jest moja próba:
let alert = UIAlertController(title: "Title",
message: "Message",
preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Okay",
style: UIAlertActionStyle.Default,
handler: {self in println("Foo")})
Mam kilka problemów w Xcode.
Dokumentacja mówi convenience init(title title: String!, style style: UIAlertActionStyle, handler handler: ((UIAlertAction!) -> Void)!)
Całe bloki / zamknięcia są w tej chwili trochę ponad moją głową. Każda sugestia jest mile widziana.
źródło
{alert in println("Foo")}
,{_ in println("Foo")}
i{println("Foo")}
również powinno działać.alert.addAction(UIAlertAction(title: "Okay", style: .default) { _ in println("Foo") })
Funkcje są obiektami pierwszej klasy w języku Swift. Jeśli więc nie chcesz używać zamknięcia, możesz po prostu zdefiniować funkcję z odpowiednim podpisem, a następnie przekazać ją jako
handler
argument. Przestrzegać:źródło
Możesz to zrobić tak prosto, jak to, używając swift 2:
Wszystkie powyższe odpowiedzi są poprawne, pokazuję tylko inny sposób, który można zrobić.
źródło
Załóżmy, że chcesz UIAlertAction z głównym tytułem, dwoma akcjami (zapisz i odrzuć) i przyciskiem anulowania:
Działa to w przypadku Swift 2 (Xcode w wersji 7.0 beta 3)
źródło
Zmiana składni w Swift 3.0
źródło
W Swift 4:
źródło
tak to robię z xcode 7.3.1
// utwórz przycisk
// dodanie przycisku do kontrolki alertów
// cały kod, ten kod doda 2 przyciski
źródło
utwórz alert, przetestowany w xcode 9
i funkcji
źródło
W Swift
W celu C
źródło