質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

2689閲覧

Swift3:TextFieldの値を取得して保存する

Ryuyan

総合スコア25

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/03/07 20:06

UIPickerControllerで選択した値がTextFieldに表示されています。
ですが、値を保存していないため、画面遷移をすると値が空になってしまします。
画面遷移をしても、そのまま値を保持しているようにしたいです。

コードは以下になります。

Swift3

1import UIKit 2 3class SettingViewController: UIViewController,UIPickerViewDelegate, UIPickerViewDataSource{ 4 5 // デーた保持 6 let intervalDefaults = UserDefaults.standard 7 8 9 // TextField 10 @IBOutlet var intervalTextField: UITextField! 11 @IBOutlet var showHolidayTextField: UITextField! 12 @IBOutlet var outputRangeTextField: UITextField! 13 @IBOutlet var workStartTimeTextField: UITextField! 14 @IBOutlet var workEndTimeTextField: UITextField! 15 16 // 表示する値の配列. 17 private let interval: NSArray = ["0","15","30","45","60","75","90"] 18 private let showHoliday: NSArray = ["ON", "OFF"] 19 private let outputRange: NSArray = ["1日後まで","2日後まで","3日後まで","4日後まで","5日後まで","6日後まで","7日後まで","8日後まで","9日後まで","10日後まで","11日後まで","12日後まで","13日後まで","14日後まで","15日後まで","16日後まで","17日後まで","18日後まで","19日後まで","20日後まで","21日後まで","22日後まで","23日後まで","24日後まで","25日後まで","26日後まで","27日後まで","28日後まで","29日後まで","30日後まで"] 20 private let workStartTimeHour: NSArray = ["00","01","02","03","04","05","06","07","08","09","10","12","13","14","15","16","17","18","19","20","21","22","23"] 21 private let workStartTimeMunite: NSArray = ["05","10","15","20","25","30","35","40","45","50","55","60"] 22 private let workEndTimeHour: NSArray = ["00","01","02","03","04","05","06","07","08","09","10","12","13","14","15","16","17","18","19","20","21","22","23"] 23 private let workEndTimeMunite: NSArray = ["05","10","15","20","25","30","35","40","45","50","55","60"] 24 25 override func viewDidLoad() { 26 super.viewDidLoad() 27 28 intervalDefaults.string(forKey: "interval") 29 30 // PickerViewはここから 31 let intervalPickerView = UIPickerView() 32 intervalPickerView.delegate = self 33 intervalPickerView.tag = 1 34 intervalPickerView.backgroundColor = UIColor.white 35 intervalTextField.inputView = intervalPickerView 36 37 let toolBar = UIToolbar(frame: CGRect(x:0, y:self.view.frame.size.height/6, width:self.view.frame.size.width, height:40.0)) 38 toolBar.layer.position = CGPoint(x: self.view.frame.size.width/2, y: self.view.frame.size.height-20.0) 39 toolBar.barStyle = UIBarStyle.default 40 toolBar.tintColor = UIColor.init(red:0/255, green:122/255, blue:255/255, alpha:1) 41 toolBar.backgroundColor = UIColor.init(red:244/255, green:244/255, blue:244/255, alpha:1) 42 let defaultButton = UIBarButtonItem(title: "Close", style: UIBarButtonItemStyle.plain, target: self, action: #selector(SettingViewController.tappedToolBarBtn)) 43 let doneButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: self, action: #selector(SettingViewController.donePressed)) 44 let flexSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: self, action: nil) 45 46 toolBar.setItems([defaultButton,flexSpace,flexSpace,doneButton], animated: true) 47 intervalTextField.inputAccessoryView = toolBar 48 49 } 50 51 func donePressed(_ sender: UIBarButtonItem) { 52 53 // キーを指定してオブジェクトを保存 54 intervalDefaults.set("\(intervalTextField.text!)", forKey: "interval") 55 intervalDefaults.synchronize() 56 // キーを指定してオブジェクトを読み込み 57 let name: String = intervalDefaults.object(forKey: "interval") as! String 58 print("\(name)") 59 60 // キーボード下げる 61 intervalTextField.resignFirstResponder() 62 showHolidayTextField.resignFirstResponder() 63 outputRangeTextField.resignFirstResponder() 64 workStartTimeTextField.resignFirstResponder() 65 workEndTimeTextField.resignFirstResponder() 66 67 } 68 69 70}

ボタンを押してdonePressedが呼ばれた時にintervalTextFieldの値を保存したいです。
また、その保存した値をintervalTextFieldに表示したいです。

わかるかたいましたらよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

viewDidLoad()でUserDefaultsに保存している値(テキスト)をintervalTextField.textにセットして下さい。

投稿2017/03/07 23:39

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ryuyan

2017/03/08 08:54

intervalDefaults.set("\(intervalTextField.text!)", forKey: "interval") であってますか?
fuzzball

2017/03/08 09:09

間違ってます。
fuzzball

2017/03/08 09:23

print(intervalDefaults.string(forKey: "interval")) として保存したデータ(テキスト)を表示してみれば、何を間違っているか分かるでしょう。
Ryuyan

2017/03/09 20:56

これで解決しました。 ご指摘ありがとうございます。 let intervalUd = UserDefaults.standard intervalUd.set(intervalTextField.text, forKey: "intervalCount") viewDidLoad()に下記を intervalTextField.text = intervalUd.string(forKey: "intervalCount")
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問