質問編集履歴

5

コードを補った

2019/12/21 20:37

投稿

marogura
marogura

スコア21

test CHANGED
@@ -1 +1 @@
1
- unrecognized selector sent to instanceというエラーがでる
1
+ Could not load NIB in bundle: 'NSBundleというエラーがでる
test CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
13
  ```
14
14
 
15
- ViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x7f88f3614670'
15
+ 'Could not load NIB in bundle: 'NSBundle
16
16
 
17
17
  ```
18
18
 
@@ -46,6 +46,20 @@
46
46
 
47
47
 
48
48
 
49
+ tableview.delegate = self as? UITableViewDelegate
50
+
51
+ tableview.dataSource = self as? UITableViewDataSource
52
+
53
+ // ナビゲーションバーの背景色
54
+
55
+ self.navigationController?.navigationBar.barTintColor = .yellow
56
+
57
+
58
+
59
+ tableview.register(CustomTableViewCell.nib, forCellReuseIdentifier: CustomTableViewCell.reuseIdentifier)
60
+
61
+
62
+
49
63
  if let storedDateList = UserDefaults.standard.string(forKey: "datelist") {
50
64
 
51
65
  // 読み込んだDateListをセットしてTableViewを更新する
@@ -68,12 +82,6 @@
68
82
 
69
83
  }
70
84
 
71
-
72
-
73
- tableview.register(CustomTableViewCell.nib, forCellReuseIdentifier: CustomTableViewCell.reuseIdentifier)
74
-
75
-
76
-
77
85
  }
78
86
 
79
87
 
@@ -86,6 +94,14 @@
86
94
 
87
95
 
88
96
 
97
+ }
98
+
99
+
100
+
101
+ extension ViewController: UITableViewDataSource {
102
+
103
+
104
+
89
105
  // セルの数
90
106
 
91
107
  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
@@ -94,6 +110,20 @@
94
110
 
95
111
  }
96
112
 
113
+
114
+
115
+
116
+
117
+ //セルの高さ
118
+
119
+ func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
120
+
121
+ return CGFloat(100)
122
+
123
+ }
124
+
125
+
126
+
97
127
 
98
128
 
99
129
  // 表示するセルの設定
@@ -128,4 +158,76 @@
128
158
 
129
159
 
130
160
 
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+
172
+
173
+ エラーメッセージ
174
+
131
- ```
175
+ ```
176
+
177
+
178
+
179
+ ### 該当のソースコード
180
+
181
+
182
+
183
+ ```ここに言語名を入力
184
+
185
+ import UIKit
186
+
187
+
188
+
189
+ class CustomTableViewCell: UITableViewCell {
190
+
191
+
192
+
193
+ @IBOutlet weak var date: UILabel!
194
+
195
+ @IBOutlet weak var menu: UILabel!
196
+
197
+
198
+
199
+
200
+
201
+ // 以下の2つの定数・変数をstaticで追加
202
+
203
+ static let reuseIdentifier = "CustomTableViewCell"
204
+
205
+ static var nib: UINib {
206
+
207
+ return UINib(nibName: "CustomTableViewCell", bundle: nil)
208
+
209
+ }
210
+
211
+
212
+
213
+ override func awakeFromNib() {
214
+
215
+ super.awakeFromNib()
216
+
217
+ }
218
+
219
+
220
+
221
+ override func setSelected(_ selected: Bool, animated: Bool) {
222
+
223
+ super.setSelected(selected, animated: animated)
224
+
225
+ }
226
+
227
+
228
+
229
+
230
+
231
+ }
232
+
233
+ ```

4

コードを補った

2019/12/21 20:37

投稿

marogura
marogura

スコア21

test CHANGED
@@ -1 +1 @@
1
- userdefaltsで保存した値をtableviewcellに表示させには
1
+ unrecognized selector sent to instanceというエラーがで
test CHANGED
@@ -2,17 +2,17 @@
2
2
 
3
3
 
4
4
 
5
- textfieldに入れた日付をuserdefaltsで保存し、その日付をtableviewcellに表示させたい
5
+ textfieldに入れた日付をuserdefaltsで保存し、その日付をtableviewcellのLabelに表示させたい
6
6
 
7
7
 
8
8
 
9
9
  ### 発生している問題・エラーメッセージ
10
10
 
11
- tableviewcellにdatefieldの日付を表示させるというコードでエラーが起きる
11
+
12
12
 
13
13
  ```
14
14
 
15
- Instance member 'text' cannot be used on type 'UITableViewCell'
15
+ ViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x7f88f3614670'
16
16
 
17
17
  ```
18
18
 

3

コードを補った

2019/12/21 20:00

投稿

marogura
marogura

スコア21

test CHANGED
File without changes
test CHANGED
@@ -3,12 +3,6 @@
3
3
 
4
4
 
5
5
  textfieldに入れた日付をuserdefaltsで保存し、その日付をtableviewcellに表示させたい
6
-
7
-
8
-
9
-
10
-
11
-
12
6
 
13
7
 
14
8
 
@@ -24,7 +18,7 @@
24
18
 
25
19
  ### 該当のソースコード
26
20
 
27
- /カスタムセルのコード
21
+
28
22
 
29
23
  ```ここに言語名を入力
30
24
 
@@ -32,69 +26,17 @@
32
26
 
33
27
 
34
28
 
35
- class CustomTableViewCell: UITableViewCell {
29
+ class ViewController: UIViewController {
36
30
 
37
31
 
38
32
 
39
-
33
+ @IBOutlet weak var tableview: UITableView!
40
34
 
41
35
 
42
36
 
43
- @IBOutlet weak var date: UILabel!
37
+ var dateList: [String] = [String]()
44
38
 
45
-
46
-
47
-
48
-
49
-
50
-
51
- override func awakeFromNib() {
52
-
53
- super.awakeFromNib()
54
-
55
-
56
-
57
-
58
-
59
- }
60
-
61
-
62
-
63
- override func setSelected(_ selected: Bool, animated: Bool) {
64
-
65
- super.setSelected(selected, animated: animated)
66
-
67
- }
68
-
69
- }
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
- import UIKit
80
-
81
- //日付設定側のコード
82
-
83
- class DatePickerViewController: UIViewController {
84
-
85
-
86
-
87
- //UIDatePickerを定義するための変数
88
-
89
- var datePicker: UIDatePicker = UIDatePicker()
39
+ var menuList: [String] = [String]()
90
-
91
-
92
-
93
-
94
-
95
- @IBOutlet weak var dateField: UITextField!
96
-
97
-
98
40
 
99
41
 
100
42
 
@@ -102,63 +44,37 @@
102
44
 
103
45
  super.viewDidLoad()
104
46
 
105
- // ピッカー設定
47
+
106
48
 
107
- datePicker.datePickerMode = UIDatePicker.Mode.date
49
+ if let storedDateList = UserDefaults.standard.string(forKey: "datelist") {
108
50
 
109
- datePicker.timeZone = NSTimeZone.local
51
+ // 読み込んだDateListをセットしてTableViewを更新する
110
52
 
111
- datePicker.locale = Locale.current
53
+ dateList = [storedDateList]
112
54
 
113
- dateField.inputView = datePicker
55
+ tableview.reloadData()
56
+
57
+ }
114
58
 
115
59
 
116
60
 
117
- // 決定バーの生成
61
+ if let storedMenuList = UserDefaults.standard.string(forKey: "menulist") {
118
62
 
119
- let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35))
63
+ // 読み込んだMenuListをセットしてTableViewを更新する
120
64
 
121
- let spacelItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
65
+ menuList = [storedMenuList]
122
66
 
123
- let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done))
67
+ tableview.reloadData()
124
68
 
125
- toolbar.setItems([spacelItem, doneItem], animated: true)
69
+ }
126
70
 
127
71
 
128
72
 
129
- // インプットビュー設定(紐づいているUITextfieldへ代入)
130
-
131
- dateField.inputView = datePicker
132
-
133
- dateField.inputAccessoryView = toolbar
73
+ tableview.register(CustomTableViewCell.nib, forCellReuseIdentifier: CustomTableViewCell.reuseIdentifier)
134
-
135
- }
136
-
137
-
138
-
139
- // UIDatePickerのDoneを押したら発火
140
-
141
- @objc func done() {
142
-
143
- dateField.endEditing(true)
144
74
 
145
75
 
146
76
 
147
- let ud = UserDefaults.standard
148
-
149
- ud.setValue(dateField.text, forKey: "datelist")
150
-
151
- // 日付のフォーマット
152
-
153
- let formatter = DateFormatter()
154
-
155
- formatter.dateFormat = "yyyy-MM-dd"
156
-
157
- dateField.text = "(formatter.string(from: datePicker.date))"
158
-
159
77
  }
160
-
161
-
162
78
 
163
79
 
164
80
 
@@ -166,13 +82,47 @@
166
82
 
167
83
  super.didReceiveMemoryWarning()
168
84
 
85
+ }
86
+
87
+
88
+
89
+ // セルの数
90
+
91
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
92
+
93
+ return dateList.count
94
+
95
+ }
96
+
97
+
98
+
99
+ // 表示するセルの設定
100
+
101
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
102
+
103
+ // UITableViewCellで返ってくるので、CustomTableViewCellで強制キャストする
104
+
105
+ let cell = tableView.dequeueReusableCell(withIdentifier: CustomTableViewCell.reuseIdentifier, for: indexPath) as! CustomTableViewCell
106
+
169
- // Dispose of any resources that can be recreated.
107
+ // セルのdate(UILabel)のtextに対応するDateList,MenuListの内容をセット
108
+
109
+ cell.date.text = dateList[indexPath.row]
110
+
111
+ cell.menu.text = menuList[indexPath.row]
112
+
113
+ return cell
114
+
115
+ }
116
+
117
+
170
118
 
171
119
  }
172
120
 
173
-
121
+
174
122
 
175
- }
123
+
124
+
125
+
176
126
 
177
127
 
178
128
 

2

コードを補った

2019/12/21 12:33

投稿

marogura
marogura

スコア21

test CHANGED
File without changes
test CHANGED
@@ -24,47 +24,57 @@
24
24
 
25
25
  ### 該当のソースコード
26
26
 
27
-
27
+ /カスタムセルのコード
28
28
 
29
29
  ```ここに言語名を入力
30
30
 
31
31
  import UIKit
32
32
 
33
- //tableview側のコード
34
33
 
34
+
35
- class ViewController: UIViewController {
35
+ class CustomTableViewCell: UITableViewCell {
36
36
 
37
37
 
38
38
 
39
+
40
+
41
+
42
+
39
- @IBOutlet weak var dateField: UITextField!
43
+ @IBOutlet weak var date: UILabel!
40
44
 
41
45
 
42
46
 
43
- override func viewDidLoad() {
47
+
44
-
45
- super.viewDidLoad()
46
48
 
47
49
 
48
50
 
49
- let ud = UserDefaults.standard
51
+ override func awakeFromNib() {
50
52
 
51
- dateField.text = ud.string(forKey: "datelist")
53
+ super.awakeFromNib()
52
54
 
53
- print(dateField as Any)
55
+
54
56
 
55
- UITableViewCell.text = String(dateField)
57
+
56
58
 
57
- ```
59
+ }
60
+
61
+
62
+
63
+ override func setSelected(_ selected: Bool, animated: Bool) {
64
+
65
+ super.setSelected(selected, animated: animated)
66
+
67
+ }
68
+
69
+ }
58
70
 
59
71
 
60
72
 
61
73
 
62
74
 
63
- ### 該当のソースコード
64
75
 
65
76
 
66
77
 
67
- ```ここに言語名を入力
68
78
 
69
79
  import UIKit
70
80
 

1

コードを補った

2019/12/21 08:10

投稿

marogura
marogura

スコア21

test CHANGED
File without changes
test CHANGED
@@ -28,11 +28,25 @@
28
28
 
29
29
  ```ここに言語名を入力
30
30
 
31
- @IBOutlet weak var dateField: UITextField!
31
+ import UIKit
32
32
 
33
+ //tableview側のコード
33
34
 
35
+ class ViewController: UIViewController {
34
36
 
37
+
38
+
39
+ @IBOutlet weak var dateField: UITextField!
40
+
41
+
42
+
43
+ override func viewDidLoad() {
44
+
45
+ super.viewDidLoad()
46
+
47
+
48
+
35
- let ud = UserDefaults.standard
49
+ let ud = UserDefaults.standard
36
50
 
37
51
  dateField.text = ud.string(forKey: "datelist")
38
52
 
@@ -42,16 +56,116 @@
42
56
 
43
57
  ```
44
58
 
45
- ### 試したこと
46
59
 
47
60
 
48
61
 
62
+
49
- ここに問題に対して試したことを記載してください。
63
+ ### 該当のソースコード
50
64
 
51
65
 
52
66
 
67
+ ```ここに言語名を入力
68
+
69
+ import UIKit
70
+
71
+ //日付設定側のコード
72
+
73
+ class DatePickerViewController: UIViewController {
74
+
75
+
76
+
77
+ //UIDatePickerを定義するための変数
78
+
79
+ var datePicker: UIDatePicker = UIDatePicker()
80
+
81
+
82
+
83
+
84
+
85
+ @IBOutlet weak var dateField: UITextField!
86
+
87
+
88
+
89
+
90
+
91
+ override func viewDidLoad() {
92
+
93
+ super.viewDidLoad()
94
+
95
+ // ピッカー設定
96
+
97
+ datePicker.datePickerMode = UIDatePicker.Mode.date
98
+
99
+ datePicker.timeZone = NSTimeZone.local
100
+
101
+ datePicker.locale = Locale.current
102
+
103
+ dateField.inputView = datePicker
104
+
105
+
106
+
53
- ### 補足情報(FW/バージョンなど)
107
+ // 決定バーの生成
108
+
109
+ let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35))
110
+
111
+ let spacelItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
112
+
113
+ let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done))
114
+
115
+ toolbar.setItems([spacelItem, doneItem], animated: true)
116
+
117
+
118
+
119
+ // インプットビュー設定(紐づいているUITextfieldへ代入)
120
+
121
+ dateField.inputView = datePicker
122
+
123
+ dateField.inputAccessoryView = toolbar
124
+
125
+ }
126
+
127
+
128
+
129
+ // UIDatePickerのDoneを押したら発火
130
+
131
+ @objc func done() {
132
+
133
+ dateField.endEditing(true)
134
+
135
+
136
+
137
+ let ud = UserDefaults.standard
138
+
139
+ ud.setValue(dateField.text, forKey: "datelist")
140
+
141
+ // 日付のフォーマット
142
+
143
+ let formatter = DateFormatter()
144
+
145
+ formatter.dateFormat = "yyyy-MM-dd"
146
+
147
+ dateField.text = "(formatter.string(from: datePicker.date))"
148
+
149
+ }
150
+
151
+
152
+
153
+
154
+
155
+ override func didReceiveMemoryWarning() {
156
+
157
+ super.didReceiveMemoryWarning()
158
+
159
+ // Dispose of any resources that can be recreated.
160
+
161
+ }
162
+
163
+
164
+
165
+ }
54
166
 
55
167
 
56
168
 
169
+
170
+
57
- ここにより詳細な情報を記載してください。
171
+ ```