Allgemeine Auswahlmöglichkeiten im Dialog
Muster ① OK
Muster ② Nie wieder anzeigen
Ich habe versucht, jedes zu implementieren, also notieren Sie es sich.
Vorbereitung für das Setzen von Flag auf True und nicht angezeigt während des Starts, nachdem die Anwendung gestartet und im Dialogfeld auf OK gedrückt wurde
DialogHelper
class DialogHelper {
static let shared = DialogHelper()
var dialogDidSee = false
func getDialogStatus()->Bool{
return dialogDidSee
}
func setDialogStatus(_ flag:Bool){
dialogDidSee = flag
}
}
So verhindern Sie, dass es bis zur Deinstallation erneut angezeigt wird Vorbereitung der Benutzerstandards zum Speichern von Daten, die auch nach dem Schließen der Anwendung nicht gelöscht werden, und Daten der Benutzereinstellungen
UserDefaultsKey
enum UserDefaultsKey: String {
case dialogNoMore = "dialog_neverAgain"
func initalValue<T>()-> T?{
switch self{
case .dialogNoMore:
return false as? T
default:
return nil
}
}
}
Erstellen Sie eine Warnung in ViewController wie folgt Erstellen Sie zwei Methoden, um zu bestimmen, ob Sie eine Warnung ausgeben sollen.
ViewController
func showDialogIfNeed(){
let didSee = DialogHelper.shared.getDialogStatus()
let neverSee = UserDefaults.standard.bool(forKey: UserDefaultsKey.dialogNoMore.rawValue)
if neverSee {
return
}else{
if didSee {
return
}else {
createDialog()
}
}
}
func createDialog(){
let alert:UIAlertController = UIAlertController(title: "Here is a message for you!", message: "", preferredStyle: .alert)
let okAction:UIAlertAction = UIAlertAction(title: "OK", style: .default, handler: {
(action:UIAlertAction!) -> Void in
DialogHelper.shared.setDialogStatus(true)
})
let neverAgainAction:UIAlertAction = UIAlertAction(title: "Never remind me", style: .default, handler: {
(action:UIAlertAction!) -> Void in
UserDefaults.standard.set(true, forKey: UserDefaultsKey.dialogNoMore.rawValue)
})
alert.addAction(okAction)
alert.addAction(neverAgainAction)
present(alert, animated: true, completion: nil)
}
ViewController
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
showDialogIfNeed()
}
Als ich es versuchte, funktionierten die OK-Taste und die Nie wieder-Taste einwandfrei.
Übrigens habe ich so ein Layout gemacht. Vergessen Sie nicht, viewDidLayoutSubviews () anzusehen.
ViewController
let label = UILabel()
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.brown
label.text = "Please see the Dialog"
label.textAlignment = .center
view.addSubview(label)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
label.frame = view.bounds
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
showDialogIfNeed()
}