質問編集履歴
5
コードを補った
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
Could not load NIB in bundle: 'NSBundleというエラーがでる
|
body
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
### 発生している問題・エラーメッセージ
|
6
6
|
|
7
7
|
```
|
8
|
-
|
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
コードを補った
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
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
|
-
|
6
|
+
|
7
7
|
```
|
8
|
-
|
8
|
+
ViewController tableView:numberOfRowsInSection:]: unrecognized selector sent to instance 0x7f88f3614670'
|
9
9
|
```
|
10
10
|
### 該当のソースコード
|
11
11
|
|
3
コードを補った
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
|
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
|
25
|
+
if let storedDateList = UserDefaults.standard.string(forKey: "datelist") {
|
63
|
-
|
26
|
+
// 読み込んだDateListをセットしてTableViewを更新する
|
27
|
+
dateList = [storedDateList]
|
28
|
+
tableview.reloadData()
|
29
|
+
}
|
64
30
|
|
31
|
+
if let storedMenuList = UserDefaults.standard.string(forKey: "menulist") {
|
65
|
-
|
32
|
+
// 読み込んだMenuListをセットしてTableViewを更新する
|
33
|
+
menuList = [storedMenuList]
|
66
|
-
|
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
|
-
|
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
コードを補った
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
|
-
|
17
|
+
|
18
|
-
class
|
18
|
+
class CustomTableViewCell: UITableViewCell {
|
19
19
|
|
20
|
+
|
21
|
+
|
20
|
-
|
22
|
+
@IBOutlet weak var date: UILabel!
|
21
23
|
|
22
|
-
override func viewDidLoad() {
|
23
|
-
super.viewDidLoad()
|
24
24
|
|
25
|
+
|
25
|
-
|
26
|
+
override func awakeFromNib() {
|
26
|
-
dateField.text = ud.string(forKey: "datelist")
|
27
|
-
|
27
|
+
super.awakeFromNib()
|
28
|
-
|
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
コードを補った
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
|
-
###
|
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
|
+
```
|