すっきりしたコードではないし他にやり方があると思いますがこれで一応。
UserDefaultに保存してある値を変更しない限り
1度アラートを出したら2度と出ないアラートを作ることがきます。
let ud = UserDefaults.standard
func onceAlert() {//単発アラート
var isAlreadyDone = false//既に実行済みかどうか
if let x = ud.object(forKey: "isAlreadyDone") as? Bool{
isAlreadyDone = x
}
if isAlreadyDone{
}else{
let alert = UIAlertController(title: "Test", message: "TestMessage", preferredStyle: .alert)
let okAction: UIAlertAction = UIAlertAction(title:"OK", style: .default, handler:{(action: UIAlertAction!) -> Void in
})
alert.addAction(okAction)
alert.view.setNeedsLayout()
let screenSize = UIScreen.main.bounds
alert.popoverPresentationController?.sourceRect = CGRect(x: view.frame.width/2, y: view.frame.height, width: 0, height: 0)
alert.popoverPresentationController?.sourceView = self.view
self.present(alert, animated: true) {
ud.set(true, forKey: "isAlreadyDone")
}
}
}
頑張っていきましょう。