Estou trabalhando para criar um UIAlertView no Swift, mas por algum motivo não consigo acertar a instrução porque estou recebendo este erro:
Não foi possível encontrar uma sobrecarga para 'init' que aceita os argumentos fornecidos
Aqui está como eu o escrevi:
let button2Alert: UIAlertView = UIAlertView(title: "Title", message: "message",
delegate: self, cancelButtonTitle: "OK", otherButtonTitles: nil)
Então, para chamá-lo, estou usando:
button2Alert.show()
No momento, ele está travando e eu simplesmente não consigo entender a sintaxe corretamente.
ios
swift
cocoa-touch
uialertview
uialertcontroller
BlueBear
fonte
fonte
UIAlertView
eUIActionSheet
foi substituído porUIAlertController
no iOS 8, você já viu isso?self
pertence a adota o protocoloUIAlertViewDelegate
(a maneira recomendada de fazer isso, no Swift, é com uma extensão).Respostas:
Da
UIAlertView
classe:No iOS 8, você pode fazer isso:
Agora
UIAlertController
é uma única classe para criar e interagir com o que sabíamos comoUIAlertView
s eUIActionSheet
s no iOS 8.Editar: Para lidar com ações:
Editar para o Swift 3:
Edite para o Swift 4.x:
fonte
UIAlertView
classe e o comentário estará no topo da declaração da classe..Default
?Um botão
Dois botões
Três botões
Manipulação de torneiras de botão
O
handler
foinil
nos exemplos acima. Você pode substituirnil
por um fechamento para fazer algo quando o usuário toca em um botão. Por exemplo:Notas
UIAlertAction.Style
tipos diferentes . Todos eles poderiam ser.default
.fonte
Você pode criar um UIAlert usando o construtor padrão, mas o 'legado' parece não funcionar:
fonte
No Swift 4.2 e no Xcode 10
Método 1 :
ALERTA SIMPLES
Método 2:
ALERTA COM CLASSE COMPARTILHADA
Se você deseja um estilo de classe compartilhada (escreva uma vez, use todos os lugares)
Agora chame alerta como este em todos os itens
Método 3:
ALERTA ATUAL TODO O TODO O WINDOWS
Se você deseja apresentar um alerta sobre todas as visualizações, use este código
Chamada de função
Método 4:
Alerta com extensão
Agora ligue assim
Método 5:
ALERTA COM CAMPOS DE TEXTO
Se você deseja adicionar campos de texto para alertar.
Método 6:
Alerta em SharedClass com extensão
Agora ligue diretamente assim
Método 7:
Alerta sem classe compartilhada com Extensão em classe separada para alerta.
Crie uma nova classe Swift e
import UIKit
. Copie e cole o código abaixo.Agora chame a função de alerta como esta em todas as suas classes (linha única).
Como é....
fonte
if timeInterval != 0 { if #available(iOS 10.0, *) { Timer.scheduledTimer(withTimeInterval: timeInterval, repeats: false, block: { _ in alert.dismiss(animated: true, completion: nil) }) } else { // Fallback on earlier versions } }
Clique em Visualizar
Concluído com dois botões OK e Cancelar
fonte
Se você estiver segmentando o iOS 7 e 8, precisará de algo assim para garantir que está usando o método certo para cada versão, porque
UIAlertView
está obsoleto no iOS 8, masUIAlertController
não está disponível no iOS 7:fonte
UIAlertView
lo até descartar o suporte para iOS 7. A Apple não rejeitará seu aplicativo por isso.Com as extensões de protocolo do Swift 2, você pode criar um protocolo que forneça uma implementação padrão para seus controladores de exibição:
ShowsAlert.swift
ViewController.swift
fonte
Mostrar UIAlertView no idioma rápido: -
Protocolo UIAlertViewDelegate
Mostre o UIAlertViewController no idioma rápido: -
fonte
Simplesmente não forneça otherButtonTitles no construtor.
Mas eu concordo com o Oscar, essa classe foi descontinuada no iOS 8, portanto não haverá uso do UIAlertView se você estiver usando um aplicativo exclusivo para iOS 8. Caso contrário, o código acima funcionará.
fonte
Eu encontrei esse
não é bom, mas funciona :)
Atualizar:
mas eu encontrei no arquivo de cabeçalho como:
alguém pode explicar isso.
fonte
Para o SWIFT4 , eu acho, estender
UIViewController
e criar um controle de confirmação reutilizável é a maneira mais elegante.Você pode estender o
UIViewController
como abaixo:Então você pode usá-lo a qualquer momento:
fonte
fonte
Eu tenho outro truque. Suponha que você tenha 5 classes em que um alerta de logout será aplicado. Tente com extensão rápida de classe.
Arquivo- Nova- Classe Swift- Nomeie-o.
Adicione o seguinte:
Implemente usando: self.makeLogOutAlert (). Espero que ajude.
fonte
Eu criei uma classe singleton para facilitar o uso em qualquer lugar do seu aplicativo: https://github.com/Swinny1989/Swift-Popups
Você pode criar um pop-up com vários botões como este:
ou pop-ups com um único botão como este:
fonte
Swift 3
A seguir, é apresentado um exemplo simples de como criar um alerta simples com um botão no Swift 3.
No exemplo acima, o retorno de chamada de identificador da ação foi omitido porque o comportamento padrão de uma exibição de alerta com um botão é desaparecer quando o botão é clicado.
Veja como criar outra ação, que pode ser adicionada ao alerta com "alert.addAction (action)". Os diferentes estilos são: padrão, destrutivo e cancelado.
fonte
Eu consegui o seguinte
UIAlertView
código de inicialização para compilar sem erros (acho que a última parte variável é complicada, talvez). Mas eu tinha que ter certeza de que a classeself
(da qual estou passando como delegada) estava adotando oUIAlertViewDelegate
protocolo para que os erros de compilação desaparecessem:A propósito, este é o erro que eu estava recebendo (a partir do Xcode 6.4):
Como outros mencionados, você deve migrar para o UIAlertController se conseguir direcionar o iOS 8.x +. Para oferecer suporte ao iOS 7, use o código acima (o iOS 6 não é suportado pelo Swift).
fonte
fonte
Você pode usar esta extensão simples com n número de botões e ações associadas swift4 e acima
você pode usá-lo como,
fonte
O motivo não funciona porque algum valor que você passou para a função não está correto. swift não gosta de Objective-C, você pode colocar nulo em argumentos que são do tipo classe sem nenhuma restrição (pode ser). O argumento otherButtonTitles é definido como não opcional, cujo tipo não possui (?) No final. então você deve passar um valor concreto para ele.
fonte
Tente isto
fonte
Use este código para exibir uma visualização de alerta
Referência: Swift Show Alert usando UIAlertController
fonte
no xcode 9
fonte
SWIFT 4: simplesmente crie uma extensão para o UIViewController da seguinte maneira:
Agora, no seu ViewController, chame diretamente a função acima como se fosse fornecida pelo UIViewController.
fonte
tente isto. Coloque o código abaixo no botão.
fonte
Aqui está um exemplo engraçado no Swift:
fonte
Aqui está uma função bastante simples do AlertView no Swift:
Você deve passar a mensagem como uma String onde você usa esta função.
fonte
O jeito antigo: UIAlertView
A nova maneira: UIAlertController
fonte
no IOS 9, você pode fazer isso
fonte
// Classe genérica para UIAlertView
Usar:-
fonte
fonte