Choix courants dans la boîte de dialogue
Motif ① OK
Motif ② Ne plus afficher
J'ai essayé de mettre en œuvre chacun, alors prenez-en note.
Préparation pour définir Flag sur True et ne pas s'afficher au démarrage après le démarrage de l'application et en appuyant sur OK dans la boîte de dialogue
DialogHelper
class DialogHelper {
static let shared = DialogHelper()
var dialogDidSee = false
func getDialogStatus()->Bool{
return dialogDidSee
}
func setDialogStatus(_ flag:Bool){
dialogDidSee = flag
}
}
Pour l'empêcher de s'afficher à nouveau jusqu'à ce qu'il soit désinstallé Préparation des paramètres par défaut de l'utilisateur pour enregistrer les données qui ne seront pas effacées même après la fermeture de l'application et les données des paramètres utilisateur
UserDefaultsKey
enum UserDefaultsKey: String {
case dialogNoMore = "dialog_neverAgain"
func initalValue<T>()-> T?{
switch self{
case .dialogNoMore:
return false as? T
default:
return nil
}
}
}
Créer une alerte dans ViewController comme ceci Créez deux méthodes pour déterminer si vous devez émettre une alerte.
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()
}
Quand je l'ai essayé, le bouton OK et le bouton Never Again fonctionnaient bien.
Au fait, j'ai fait une mise en page comme celle-ci. N'oubliez pas de regarder viewDidLayoutSubviews ().
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()
}