前提・実現したいこと
webViewで作られた掲示板iosアプリをswiftで作っています。
初回起動時だけwebの利用規約画面を表示させる部分で詰まっています。
エンジニア初心者なので、拙い質問かもしれませんが、よろしくお願いします。
該当のコード
Swift
1 override func viewDidLoad() { 2 super.viewDidLoad() 3 webView.uiDelegate = self 4 webView.navigationDelegate = self 5 6 if isTutorialDone() { 7 let myURL = URL(string: "利用規約のURL") 8 let myRequest = URLRequest(url: myURL!) 9 webView.load(myRequest) 10 } else { 11 let myURL = URL(string: "起動時に読まれる投稿一覧のURL") 12 let myRequest = URLRequest(url: myURL!) 13 webView.load(myRequest) 14 } 15 } 16 17 //過去に読み込まれたかチェック 18 func isTutorialDone() ->Bool { 19 let obj = ud.bool(forKey: "first") 20 if obj { 21 return false 22 } 23 return true 24 } 25
起きていること
毎起動時、利用規約のURLが読まれる。
初回起動時のイベントでuserdefaultsにflagを持たせて判定するのかも
しれないと思っているのですが、そこで詰まってしまいました。
補足
Swift5
Xcodeのバージョン:11.1
何卒よろしくお願いいたします。
一部変更を加えました。
変更後のソースが以下となります。
変更を加えた後も利用規約のURLを読みに行ってしまっています。
変更後のソース
Swift
1AppDelegate.swift 2 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 3 4 //初回起動判定のuserdefaults 5 let ud = UserDefaults.standard 6 ud.set(true, forKey: "first") 7 print(ud.bool(forKey: "first")) 8 9 return true 10 } 11 12ViewController 13 override func viewDidLoad() { 14 super.viewDidLoad() 15 webView.uiDelegate = self 16 webView.navigationDelegate = self 17 18 if ud.bool(forKey: "first") == true { 19 let myURL = URL(string: "利用規約のURL") 20 let myRequest = URLRequest(url: myURL!) 21 webView.load(myRequest) 22 ud.set(false, forKey: "first") 23 } else { 24 let myURL = URL(string: "起動時に読まれる投稿一覧のURL") 25 let myRequest = URLRequest(url: myURL!) 26 webView.load(myRequest) 27 } 28 29 } 30 31
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。