Ich habe daran gearbeitet, eine UIAlertView in Swift zu erstellen, aber aus irgendeinem Grund kann ich die Anweisung nicht richtig verstehen, weil ich diesen Fehler erhalte:
Es wurde keine Überladung für 'init' gefunden, die die angegebenen Argumente akzeptiert
So habe ich es geschrieben:
let button2Alert: UIAlertView = UIAlertView(title: "Title", message: "message",
delegate: self, cancelButtonTitle: "OK", otherButtonTitles: nil)
Um es dann zu nennen, benutze ich:
button2Alert.show()
Ab sofort stürzt es ab und ich kann die Syntax einfach nicht richtig verstehen.
ios
swift
cocoa-touch
uialertview
uialertcontroller
Blauer bär
quelle
quelle
UIAlertView
undUIActionSheet
wurde durchUIAlertController
in iOS 8 ersetzt, haben Sie sich das angesehen?self
gehört, das Protokoll übernimmtUIAlertViewDelegate
(die empfohlene Vorgehensweise in Swift ist eine Erweiterung).Antworten:
Aus der
UIAlertView
Klasse:Unter iOS 8 können Sie dies tun:
Jetzt
UIAlertController
gibt es eine einzige Klasse zum Erstellen und Interagieren mit dem, was wir unter iOS 8 alsUIAlertView
s undUIActionSheet
s kannten .Bearbeiten: So handhaben Sie Aktionen:
Bearbeiten für Swift 3:
Bearbeiten für Swift 4.x:
quelle
UIAlertView
Klasse, und der Kommentar befindet sich direkt über der Klassendeklaration..Default
?Ein Knopf
Zwei Knöpfe
Drei Knöpfe
Handhabung von Tastenanschlägen
Das
handler
warnil
in den obigen Beispielen. Sie können durchnil
einen Verschluss ersetzen , um etwas zu tun, wenn der Benutzer auf eine Schaltfläche tippt. Zum Beispiel:Anmerkungen
UIAlertAction.Style
Typen verwenden. Sie könnten alle sein.default
.quelle
Sie können einen UIAlert mit dem Standardkonstruktor erstellen, aber der "Legacy" -Konstruktor scheint nicht zu funktionieren:
quelle
In Swift 4.2 und Xcode 10
Methode 1 :
EINFACHER ALARM
Methode 2:
ALARM MIT GEMEINSAMER KLASSE
Wenn Sie einen gemeinsamen Klassenstil wünschen (einmal schreiben, überall verwenden)
Rufen Sie jetzt in jeder Ware einen solchen Alarm an
Methode 3:
PRÄSENTIEREN SIE ALARM OBEN ALLER FENSTER
Verwenden Sie diesen Code, wenn Sie über allen Ansichten eine Warnung anzeigen möchten
Funktionsaufruf
Methode 4:
Alarm mit Erweiterung
Rufen Sie jetzt so an
Methode 5:
ALARM MIT TEXTFELDERN
Wenn Sie Textfelder zur Warnung hinzufügen möchten.
Methode 6:
Warnung in SharedClass mit Erweiterung
Rufen Sie jetzt direkt so an
Methode 7:
Warnung ohne gemeinsame Klasse mit Erweiterung in separater Klasse zur Warnung.
Erstellen Sie eine neue Swift-Klasse und
import UIKit
. Kopieren Sie den folgenden Code und fügen Sie ihn ein.Rufen Sie nun in all Ihren Klassen eine solche Warnfunktion auf (einzeilig).
Wie ist das....
quelle
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 } }
Klicken Sie auf Ansicht
Fertig mit zwei Tasten OK & Abbrechen
quelle
Wenn Sie auf iOS 7 und 8 abzielen , benötigen Sie Folgendes, um sicherzustellen, dass Sie für jede Version die richtige Methode verwenden, da diese
UIAlertView
in iOS 8 veraltet, in iOS 7 jedochUIAlertController
nicht verfügbar ist:quelle
UIAlertView
bis Sie die Unterstützung für iOS 7 einstellen. Apple wird Ihre App dafür nicht ablehnen.Mit den Protokollerweiterungen von Swift 2 können Sie ein Protokoll erstellen, das Ihren Ansichtscontrollern eine Standardimplementierung bietet:
ShowsAlert.swift
ViewController.swift
quelle
UIAlertView in schneller Sprache anzeigen: -
Protokoll UIAlertViewDelegate
UIAlertViewController in schneller Sprache anzeigen: -
quelle
Geben Sie im Konstruktor einfach keine otherButtonTitles an.
Aber ich stimme Oscar zu, diese Klasse ist in iOS 8 veraltet, sodass UIAlertView nicht verwendet wird, wenn Sie nur eine iOS 8-App verwenden. Andernfalls funktioniert der obige Code.
quelle
Ich habe diesen gefunden,
nicht gut, aber es funktioniert :)
Aktualisieren:
aber ich habe in der Header-Datei gefunden als:
jemand kann das erklären.
quelle
Für SWIFT4 ist es meiner Meinung nach
UIViewController
am elegantesten, eine wiederverwendbare Bestätigungssteuerung zu erweitern und zu erstellen.Sie können
UIViewController
Folgendes erweitern:Dann können Sie es jederzeit verwenden:
quelle
quelle
Ich habe noch einen Trick. Angenommen, Sie haben 5 Klassen, in denen eine Abmeldemeldung angewendet werden soll. Versuchen Sie es mit einer schnellen Klassenerweiterung.
Datei- Neu- Swift-Klasse- Nennen Sie es.
Fügen Sie Folgendes hinzu:
Implementieren Sie mit: self.makeLogOutAlert (). Ich hoffe es hilft.
quelle
Ich habe eine Singleton-Klasse erstellt, um die Verwendung von überall in Ihrer App zu vereinfachen : https://github.com/Swinny1989/Swift-Popups
Sie können dann ein Popup mit mehreren Schaltflächen wie folgt erstellen:
oder Popups mit einer einzigen Schaltfläche wie folgt:
quelle
Swift 3
Das folgende Beispiel zeigt, wie Sie mit Swift 3 eine einfache Warnung mit einer Schaltfläche erstellen.
Im obigen Beispiel wurde der Handle-Rückruf der Aktion weggelassen, da das Standardverhalten einer Warnansicht mit einer Schaltfläche beim Klicken auf die Schaltfläche ausgeblendet wird.
Hier erfahren Sie, wie Sie eine weitere Aktion erstellen, die mit "alert.addAction (action)" zur Warnung hinzugefügt werden kann. Die verschiedenen Stile sind .default, .destructive und .cancel.
quelle
Ich habe den folgenden
UIAlertView
Initialisierungscode zum fehlerfreien Kompilieren erhalten (ich denke, der letzte, abwechslungsreiche Teil ist vielleicht schwierig). Aber ich musste sicherstellen, dass die Klasse vonself
(die ich als Delegierter übergebe) dasUIAlertViewDelegate
Protokoll übernahm, damit die Kompilierungsfehler verschwinden:Dies ist übrigens der Fehler, den ich erhalten habe (ab Xcode 6.4):
Wie bereits erwähnt, sollten Sie auf UIAlertController migrieren, wenn Sie auf iOS 8.x + abzielen können. Verwenden Sie zur Unterstützung von iOS 7 den obigen Code (iOS 6 wird von Swift nicht unterstützt).
quelle
quelle
Sie können diese einfache Erweiterung mit n Anzahl von Schaltflächen und zugehörigen Aktionen ab Swift4 verwenden
Sie können es wie verwenden,
quelle
Der Grund, warum es nicht funktioniert, weil ein Wert, den Sie an die Funktion übergeben haben, nicht korrekt ist. swift mag Objective-C nicht, Sie können Argumente, die vom Klassentyp sind, ohne Einschränkung mit Null versehen (möglicherweise). Das Argument otherButtonTitles ist als nicht optional definiert, dessen Typ kein (?) Am Ende hat. Sie müssen ihm also einen konkreten Wert übergeben.
quelle
Versuche dies
quelle
Verwenden Sie diesen Code, um eine Alarmansicht anzuzeigen
Referenz: Swift Show Alert mit UIAlertController
quelle
in xcode 9
quelle
SWIFT 4: Erstellen Sie einfach eine Erweiterung für UIViewController wie folgt:
Rufen Sie jetzt in Ihrem ViewController die obige Funktion direkt auf, als ob sie von UIViewController bereitgestellt würden.
quelle
Versuche dies. Geben Sie den folgenden Code in die Schaltfläche ein.
quelle
Hier ist ein lustiges Beispiel in Swift:
quelle
Hier ist eine ziemlich einfache Funktion von AlertView in Swift:
Sie müssen die Nachricht als Zeichenfolge übergeben, in der Sie diese Funktion verwenden.
quelle
Der alte Weg: UIAlertView
Der neue Weg: UIAlertController
quelle
Unter iOS 9 können Sie dies tun
quelle
// Generische Klasse für UIAlertView
Verwenden:-
quelle
quelle