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

質問編集履歴

5

コードを補った

2019/12/21 20:37

投稿

marogura
marogura

スコア21

title CHANGED
@@ -1,1 +1,1 @@
1
- unrecognized selector sent to instanceというエラーがでる
1
+ Could not load NIB in bundle: 'NSBundleというエラーがでる
body CHANGED
@@ -5,7 +5,7 @@
5
5
  ### 発生している問題・エラーメッセージ
6
6
 
7
7
  ```
8
- ViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x7f88f3614670'
8
+ 'Could not load NIB in bundle: 'NSBundle
9
9
  ```
10
10
  ### 該当のソースコード
11
11
 
@@ -22,6 +22,13 @@
22
22
  override func viewDidLoad() {
23
23
  super.viewDidLoad()
24
24
 
25
+ tableview.delegate = self as? UITableViewDelegate
26
+ tableview.dataSource = self as? UITableViewDataSource
27
+ // ナビゲーションバーの背景色
28
+ self.navigationController?.navigationBar.barTintColor = .yellow
29
+
30
+ tableview.register(CustomTableViewCell.nib, forCellReuseIdentifier: CustomTableViewCell.reuseIdentifier)
31
+
25
32
  if let storedDateList = UserDefaults.standard.string(forKey: "datelist") {
26
33
  // 読み込んだDateListをセットしてTableViewを更新する
27
34
  dateList = [storedDateList]
@@ -33,19 +40,27 @@
33
40
  menuList = [storedMenuList]
34
41
  tableview.reloadData()
35
42
  }
36
-
37
- tableview.register(CustomTableViewCell.nib, forCellReuseIdentifier: CustomTableViewCell.reuseIdentifier)
38
-
39
43
  }
40
44
 
41
45
  override func didReceiveMemoryWarning() {
42
46
  super.didReceiveMemoryWarning()
43
47
  }
44
48
 
49
+ }
50
+
51
+ extension ViewController: UITableViewDataSource {
52
+
45
53
  // セルの数
46
54
  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
47
55
  return dateList.count
48
56
  }
57
+
58
+
59
+ //セルの高さ
60
+ func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
61
+ return CGFloat(100)
62
+ }
63
+
49
64
 
50
65
  // 表示するセルの設定
51
66
  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
@@ -63,4 +78,40 @@
63
78
 
64
79
 
65
80
 
81
+
82
+
83
+
84
+
85
+
86
+
87
+ エラーメッセージ
88
+ ```
89
+
90
+ ### 該当のソースコード
91
+
92
+ ```ここに言語名を入力
93
+ import UIKit
94
+
95
+ class CustomTableViewCell: UITableViewCell {
96
+
97
+ @IBOutlet weak var date: UILabel!
98
+ @IBOutlet weak var menu: UILabel!
99
+
100
+
101
+ // 以下の2つの定数・変数をstaticで追加
102
+ static let reuseIdentifier = "CustomTableViewCell"
103
+ static var nib: UINib {
104
+ return UINib(nibName: "CustomTableViewCell", bundle: nil)
105
+ }
106
+
107
+ override func awakeFromNib() {
108
+ super.awakeFromNib()
109
+ }
110
+
111
+ override func setSelected(_ selected: Bool, animated: Bool) {
112
+ super.setSelected(selected, animated: animated)
113
+ }
114
+
115
+
116
+ }
66
117
  ```

4

コードを補った

2019/12/21 20:37

投稿

marogura
marogura

スコア21

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

3

コードを補った

2019/12/21 20:00

投稿

marogura
marogura

スコア21

title CHANGED
File without changes
body CHANGED
@@ -2,90 +2,65 @@
2
2
 
3
3
  textfieldに入れた日付をuserdefaltsで保存し、その日付をtableviewcellに表示させたい
4
4
 
5
-
6
-
7
-
8
5
  ### 発生している問題・エラーメッセージ
9
6
  tableviewcellにdatefieldの日付を表示させるというコードでエラーが起きる
10
7
  ```
11
8
  Instance member 'text' cannot be used on type 'UITableViewCell'
12
9
  ```
13
10
  ### 該当のソースコード
14
- /カスタムセルのコード
11
+
15
12
  ```ここに言語名を入力
16
13
  import UIKit
17
14
 
18
- class CustomTableViewCell: UITableViewCell {
15
+ class ViewController: UIViewController {
19
16
 
17
+ @IBOutlet weak var tableview: UITableView!
20
18
 
19
+ var dateList: [String] = [String]()
20
+ var menuList: [String] = [String]()
21
21
 
22
- @IBOutlet weak var date: UILabel!
23
-
24
-
25
-
26
- override func awakeFromNib() {
27
- super.awakeFromNib()
28
-
29
-
30
- }
31
-
32
- override func setSelected(_ selected: Bool, animated: Bool) {
33
- super.setSelected(selected, animated: animated)
34
- }
35
- }
36
-
37
-
38
-
39
-
40
- import UIKit
41
- //日付設定側のコード
42
- class DatePickerViewController: UIViewController {
43
-
44
- //UIDatePickerを定義するための変数
45
- var datePicker: UIDatePicker = UIDatePicker()
46
-
47
-
48
- @IBOutlet weak var dateField: UITextField!
49
-
50
-
51
22
  override func viewDidLoad() {
52
23
  super.viewDidLoad()
53
- // ピッカー設定
54
- datePicker.datePickerMode = UIDatePicker.Mode.date
55
- datePicker.timeZone = NSTimeZone.local
56
- datePicker.locale = Locale.current
57
- dateField.inputView = datePicker
58
24
 
59
- // 決定バーの生成
60
- let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35))
61
- let spacelItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
62
- let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done))
25
+ if let storedDateList = UserDefaults.standard.string(forKey: "datelist") {
63
- toolbar.setItems([spacelItem, doneItem], animated: true)
26
+ // 読み込んだDateListをセットしてTableViewを更新する
27
+ dateList = [storedDateList]
28
+ tableview.reloadData()
29
+ }
64
30
 
31
+ if let storedMenuList = UserDefaults.standard.string(forKey: "menulist") {
65
- // インプットビュー設定(紐づいUITextfieldへ代入)
32
+ // 読み込んだMenuListをセットTableViewを更新す
33
+ menuList = [storedMenuList]
66
- dateField.inputView = datePicker
34
+ tableview.reloadData()
67
- dateField.inputAccessoryView = toolbar
68
- }
35
+ }
69
-
70
- // UIDatePickerのDoneを押したら発火
71
- @objc func done() {
72
- dateField.endEditing(true)
73
36
 
74
- let ud = UserDefaults.standard
75
- ud.setValue(dateField.text, forKey: "datelist")
76
- // 日付のフォーマット
77
- let formatter = DateFormatter()
78
- formatter.dateFormat = "yyyy-MM-dd"
79
- dateField.text = "(formatter.string(from: datePicker.date))"
37
+ tableview.register(CustomTableViewCell.nib, forCellReuseIdentifier: CustomTableViewCell.reuseIdentifier)
38
+
80
39
  }
81
40
 
82
-
83
41
  override func didReceiveMemoryWarning() {
84
42
  super.didReceiveMemoryWarning()
85
- // Dispose of any resources that can be recreated.
86
43
  }
44
+
87
-
45
+ // セルの数
46
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
47
+ return dateList.count
88
- }
48
+ }
49
+
50
+ // 表示するセルの設定
51
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
52
+ // UITableViewCellで返ってくるので、CustomTableViewCellで強制キャストする
53
+ let cell = tableView.dequeueReusableCell(withIdentifier: CustomTableViewCell.reuseIdentifier, for: indexPath) as! CustomTableViewCell
54
+ // セルのdate(UILabel)のtextに対応するDateList,MenuListの内容をセット
55
+ cell.date.text = dateList[indexPath.row]
56
+ cell.menu.text = menuList[indexPath.row]
57
+ return cell
58
+ }
59
+
60
+ }
61
+
89
62
 
63
+
90
64
 
65
+
91
66
  ```

2

コードを補った

2019/12/21 12:33

投稿

marogura
marogura

スコア21

title CHANGED
File without changes
body CHANGED
@@ -11,27 +11,32 @@
11
11
  Instance member 'text' cannot be used on type 'UITableViewCell'
12
12
  ```
13
13
  ### 該当のソースコード
14
-
14
+ /カスタムセルのコード
15
15
  ```ここに言語名を入力
16
16
  import UIKit
17
- //tableview側のコード
17
+
18
- class ViewController: UIViewController {
18
+ class CustomTableViewCell: UITableViewCell {
19
19
 
20
+
21
+
20
- @IBOutlet weak var dateField: UITextField!
22
+ @IBOutlet weak var date: UILabel!
21
23
 
22
- override func viewDidLoad() {
23
- super.viewDidLoad()
24
24
 
25
+
25
- let ud = UserDefaults.standard
26
+ override func awakeFromNib() {
26
- dateField.text = ud.string(forKey: "datelist")
27
- print(dateField as Any)
27
+ super.awakeFromNib()
28
- UITableViewCell.text = String(dateField)
28
+
29
+
29
- ```
30
+ }
30
31
 
32
+ override func setSelected(_ selected: Bool, animated: Bool) {
33
+ super.setSelected(selected, animated: animated)
34
+ }
35
+ }
31
36
 
32
- ### 該当のソースコード
33
37
 
34
- ```ここに言語名を入力
38
+
39
+
35
40
  import UIKit
36
41
  //日付設定側のコード
37
42
  class DatePickerViewController: UIViewController {

1

コードを補った

2019/12/21 08:10

投稿

marogura
marogura

スコア21

title CHANGED
File without changes
body CHANGED
@@ -13,17 +13,74 @@
13
13
  ### 該当のソースコード
14
14
 
15
15
  ```ここに言語名を入力
16
+ import UIKit
17
+ //tableview側のコード
18
+ class ViewController: UIViewController {
19
+
16
- @IBOutlet weak var dateField: UITextField!
20
+ @IBOutlet weak var dateField: UITextField!
21
+
17
-
22
+ override func viewDidLoad() {
23
+ super.viewDidLoad()
24
+
18
- let ud = UserDefaults.standard
25
+ let ud = UserDefaults.standard
19
26
  dateField.text = ud.string(forKey: "datelist")
20
27
  print(dateField as Any)
21
28
  UITableViewCell.text = String(dateField)
22
29
  ```
23
- ### 試したこと
24
30
 
25
- ここに問題に対して試したことを記載してください。
26
31
 
27
- ### 補足情報(FW/ツールジョンなど)
32
+ ### 該当スコード
28
33
 
34
+ ```ここに言語名を入力
35
+ import UIKit
36
+ //日付設定側のコード
37
+ class DatePickerViewController: UIViewController {
38
+
39
+ //UIDatePickerを定義するための変数
40
+ var datePicker: UIDatePicker = UIDatePicker()
41
+
42
+
43
+ @IBOutlet weak var dateField: UITextField!
44
+
45
+
46
+ override func viewDidLoad() {
47
+ super.viewDidLoad()
48
+ // ピッカー設定
49
+ datePicker.datePickerMode = UIDatePicker.Mode.date
50
+ datePicker.timeZone = NSTimeZone.local
51
+ datePicker.locale = Locale.current
52
+ dateField.inputView = datePicker
53
+
29
- ここにより詳細な情報を記載してください。
54
+ // 決定バーの生成
55
+ let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 35))
56
+ let spacelItem = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)
57
+ let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(done))
58
+ toolbar.setItems([spacelItem, doneItem], animated: true)
59
+
60
+ // インプットビュー設定(紐づいているUITextfieldへ代入)
61
+ dateField.inputView = datePicker
62
+ dateField.inputAccessoryView = toolbar
63
+ }
64
+
65
+ // UIDatePickerのDoneを押したら発火
66
+ @objc func done() {
67
+ dateField.endEditing(true)
68
+
69
+ let ud = UserDefaults.standard
70
+ ud.setValue(dateField.text, forKey: "datelist")
71
+ // 日付のフォーマット
72
+ let formatter = DateFormatter()
73
+ formatter.dateFormat = "yyyy-MM-dd"
74
+ dateField.text = "(formatter.string(from: datePicker.date))"
75
+ }
76
+
77
+
78
+ override func didReceiveMemoryWarning() {
79
+ super.didReceiveMemoryWarning()
80
+ // Dispose of any resources that can be recreated.
81
+ }
82
+
83
+ }
84
+
85
+
86
+ ```