Estou apresentando um UIAlertView
ao usuário e não consigo descobrir como escrever o manipulador. Esta é minha tentativa:
let alert = UIAlertController(title: "Title",
message: "Message",
preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Okay",
style: UIAlertActionStyle.Default,
handler: {self in println("Foo")})
Eu recebo um monte de problemas no Xcode.
A documentação diz convenience init(title title: String!, style style: UIAlertActionStyle, handler handler: ((UIAlertAction!) -> Void)!)
Os blocos / fechamentos inteiros estão um pouco além da minha cabeça no momento. Qualquer sugestão é muito apreciada.
fonte
{alert in println("Foo")}
,,{_ in println("Foo")}
e{println("Foo")}
também deve funcionar.alert.addAction(UIAlertAction(title: "Okay", style: .default) { _ in println("Foo") })
Funções são objetos de primeira classe em Swift. Então, se você não quiser usar um encerramento, você também pode apenas definir uma função com a assinatura apropriada e depois passá-la como o
handler
argumento. Observar:fonte
Você pode fazer isso de forma simples, usando o swift 2:
Todas as respostas acima estão corretas, estou apenas mostrando uma outra maneira que pode ser feita.
fonte
Vamos supor que você deseja um UIAlertAction com título principal, duas ações (salvar e descartar) e o botão Cancelar:
Isso funciona para o swift 2 (Xcode versão 7.0 beta 3)
fonte
Mudança de sintaxe no swift 3.0
fonte
Em Swift 4:
fonte
é assim que eu faço com o xcode 7.3.1
// cria o botão
// adicionando o botão ao controle de alerta
// todo o código, este código irá adicionar 2 botões
fonte
criar alerta, testado no xcode 9
e a função
fonte
In Swift
No Objetivo C
fonte