質問です。
シチュエーションをまとめると
Swift
1①起動時の画面にあるstartButtonを押した際に 2UserDefaults.standard.integer(forKey: "setTimer") 3に値が入っているかをcheckTimerSetting()で調べる 4 5②値が入っていなかった場合、テキストフィールドがついたアラートを呼び出す。 6 7③入力した値を先述のUserDefaultsにsetする
という流れを想定してます。
行き詰まってる点としては、③でsetする際に値が入らないことです。
直前のprint(firstSetTimer)では入力した値がコンソールに表示されることを確認しています。
いろんなサイトを調べたりしましたがラベルに反映させるような事例しかなく足踏み状態です。
よろしければご教授願えればと思います。
下記に実際に使用しているコードを添付しておきます。
Swift
1import UIKit 2 3class TopViewController: UIViewController { 4 5 @IBOutlet weak var appName: UILabel! 6 @IBOutlet weak var brain: UIImageView! 7 @IBOutlet weak var timerLabel: UILabel! 8 9 let timer = UserDefaults.standard.integer(forKey: "setTimer") 10 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 //UserDefaults.standard.set(0, forKey: "setTimer") //リセット用 14 } 15 16 @IBAction func startButton(_ sender: UIButton) { 17 checkTimerSetting() 18 } 19 20 //タイマー設定がされているか確認する 21 func checkTimerSetting() { 22 23 if timer > 0 { 24 //二回目以降 25 26 print("設定時間は\(timer)分です") 27 self.performSegue(withIdentifier: "toHTML", sender: nil) 28 29 } else { 30 31 //初回アクセス 32 print("時間未設定") 33 //UserDefaults.standard.set(20, forKey: "setTimer") 34 35 let alert = UIAlertController(title: "任意の値を入力してください", message: "", preferredStyle: .alert) 36 let okAction = UIAlertAction(title: "OK", style: .default) { (action:UIAlertAction!) in 37 if let firstSetTimer:Int = Int((alert.textFields?[0].text)!){ 38 print(firstSetTimer) 39 UserDefaults.standard.set(firstSetTimer, forKey: "setTimer") 40 } 41 42 } 43 alert.addTextField { (textField) in 44 textField.placeholder = "数字で入力してください" 45 textField.keyboardType = .numberPad 46 } 47 alert.addAction(okAction) 48 present(alert, animated: true, completion: nil) 49 50 } 51 } 52} 53
回答1件
あなたの回答
tips
プレビュー