質問するログイン新規登録

回答編集履歴

1

削除

2018/05/17 23:44

投稿

_Kentarou
_Kentarou

スコア8490

answer CHANGED
@@ -1,74 +1,1 @@
1
- 解決したのでしたら良かったです、回答を書いていたので一応載せておきます。
2
- `UserDefaults`は配列を格納できますので、文字列を保存するより、文字列の配列を保存したほうが扱いやすいです。
3
-
4
- 自分なりに書き直して見ましたので参考にしてください。
5
-
6
-
7
- ```swift
8
- import UIKit
9
-
10
- class ListViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
11
-
12
- @IBOutlet weak var mainSpinner: UIPickerView! {
13
- didSet {
14
- mainSpinner.delegate = self
15
- mainSpinner.dataSource = self
16
- }
17
- }
18
- var workNames: [String] = []
19
-
20
- override func viewDidLoad() {
21
- super.viewDidLoad()
22
-
23
- // ダミーの初期値
24
- UserDefaults.standard.workNames = ["work1", "work2", "work3"]
25
- }
26
-
27
- override func viewWillAppear(_ animated: Bool) {
28
- super.viewWillAppear(animated)
29
-
30
- // 動作確認のために次の画面から戻った時にUserDefaults配列に一つ追加
31
- var workNames = UserDefaults.standard.workNames
32
- workNames.append("work")
33
- UserDefaults.standard.workNames = workNames
34
- }
35
-
36
- override func viewDidAppear(_ animated: Bool) {
37
- super.viewDidAppear(animated)
38
-
39
- // UserDefaultsから配列を取得してPickerをリロード
40
- workNames = UserDefaults.standard.workNames
41
- mainSpinner.reloadAllComponents()
42
- }
43
-
44
- func numberOfComponents(in pickerView: UIPickerView) -> Int {
45
- return 1
46
- }
47
-
48
- func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
49
- return workNames.count
50
- }
51
-
52
- func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
53
- return workNames[row]
54
- }
55
-
56
- func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
57
- print("row: (row)")
58
- print("value: (workNames[row])")
59
- }
60
- }
61
-
62
- // UserDefaultの拡張
63
- extension UserDefaults {
64
- var workNames: [String] {
65
- get {
66
- guard let workNames = UserDefaults.standard.object(forKey: "WorkNames") as? [String] else { return [] }
67
- return workNames
1
+ 回答するものを間違えました。
68
- }
69
- set { UserDefaults.standard.set(newValue, forKey: "WorkNames") }
70
- }
71
- }
72
-
73
-
74
- ```