質問編集履歴

6

changed title

2020/08/04 07:32

投稿

Ytan
Ytan

スコア39

test CHANGED
@@ -1 +1 @@
1
- NavigationControllerの遷移につ
1
+ TableView値の遷移が上手くかない(エラー無し)
test CHANGED
File without changes

5

変更

2020/08/04 07:32

投稿

Ytan
Ytan

スコア39

test CHANGED
File without changes
test CHANGED
@@ -1,30 +1,16 @@
1
1
  ### 疑問点
2
2
 
3
- ViewControllerからRegisterViewControllerに遷移する場合
4
-
5
- 遷移方法はViewControllerのdidSelectRowAtでそれぞれのindexを押した時に
3
+ [Table View からの画面遷移 (Swift)](https://softmoco.com/basics/how-to-implement-table-view-navigation.php)
6
-
7
- RegisterViewControllerに遷移したいです。
4
+
8
-
9
- RegisterViewControllerでNavigationBarの戻るを押すとViewControllerに戻るようにしたいです。
5
+ [didSelectRowAtとprepareを両方使うとエラーになる](https://www.irohabook.com/didselectrowat)
10
-
11
-
12
-
6
+
7
+
8
+
13
- RegisterViewControllerのみNavigationControllerつけることは可能ですか?
9
+ 上記を参考にcellが押された時に遷移して値を渡す処理を書いたのですが、cellを押しても遷移されません。
14
-
10
+
15
- ViewControllerにはNavigationBarがないようにしたいです
11
+ エラーも出ないのでidentifierが間違ってるわけでもく、Labelも外れてません
16
-
17
- 方法はありますか?
12
+
18
-
19
-
20
-
21
- もし上記ができる場合ViewControllerのitemsの情報をRegisterViewControllerでそれぞれ表示したいのですが
22
-
23
- 値を遷移する場合のprepareForsegueを使うのですか?
24
-
25
-
26
-
27
- ```FirstViewController
13
+ ```ViewController
28
14
 
29
15
  import UIKit
30
16
 
@@ -94,19 +80,43 @@
94
80
 
95
81
 
96
82
 
97
- func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
83
+ override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
98
-
84
+
99
- // セルの選択を解除
85
+ if segue.identifier == "registerControl"{
100
-
86
+
101
- tableView.deselectRow(at: indexPath, animated: true)
87
+ if let nextVC = table.indexPathForSelectedRow{
88
+
102
-
89
+ guard let destination = segue.destination as? RegisterViewController else{
90
+
103
- //疑問点です
91
+ fatalError("Failed to prepare")
104
-
92
+
105
- }
93
+ }
94
+
106
-
95
+ destination.item = items[nextVC.row]
96
+
97
+ }
98
+
99
+ }
100
+
101
+ }
102
+
103
+
104
+
105
+ override func viewWillAppear(_ animated: Bool) {
106
+
107
+ if let indexPath = table.indexPathForSelectedRow{
108
+
109
+ table.deselectRow(at: indexPath, animated: true)
110
+
111
+ }
112
+
113
+ }
114
+
115
+ }
116
+
107
- ```
117
+ ```
108
-
118
+
109
- ```ここに言語を入力
119
+ ```ItemsModel
110
120
 
111
121
  import Foundation
112
122
 
@@ -134,6 +144,66 @@
134
144
 
135
145
  ```
136
146
 
147
+ ```TableViewCell
148
+
149
+ import UIKit
150
+
151
+
152
+
153
+ class TableViewCell: UITableViewCell {
154
+
155
+
156
+
157
+ @IBOutlet var nameLabel:UILabel!
158
+
159
+ @IBOutlet var dateLabel:UILabel!
160
+
161
+
162
+
163
+ override func awakeFromNib() {
164
+
165
+ super.awakeFromNib()
166
+
167
+ // Initialization code
168
+
169
+ }
170
+
171
+
172
+
173
+ override func setSelected(_ selected: Bool, animated: Bool) {
174
+
175
+ super.setSelected(selected, animated: animated)
176
+
177
+ }
178
+
179
+
180
+
181
+ static let identifier = "TableViewCell"
182
+
183
+
184
+
185
+ static func nib() -> UINib{
186
+
187
+ return UINib(nibName: "TableViewCell", bundle: nil)
188
+
189
+ }
190
+
191
+
192
+
193
+ func setcell(item:Item){
194
+
195
+ self.nameLabel.text = item.name as String
196
+
197
+ self.dateLabel.text = item.date as String
198
+
199
+ }
200
+
201
+ }
202
+
203
+
204
+
205
+ ```
206
+
137
207
  ```RegisterViewController
138
208
 
139
209
  import UIKit
@@ -148,15 +218,21 @@
148
218
 
149
219
 
150
220
 
221
+ var item: Item!
222
+
223
+
224
+
151
225
  override func viewDidLoad() {
152
226
 
153
227
  super.viewDidLoad()
154
228
 
155
229
  // Do any additional setup after loading the view.
156
230
 
231
+ registeredNameLabel.text = item.name
232
+
233
+ registeredDateLabel.text = item.date
234
+
157
- }
235
+ }
158
-
159
-
160
236
 
161
237
  ```
162
238
 
@@ -164,7 +240,9 @@
164
240
 
165
241
  追記
166
242
 
167
- 同じStoryboardと異なるStoryboardで遷移方法がそれぞれありますがイメージすることが難しいのですが
243
+ 同じStoryboardと異なるStoryboardで遷移方法がそれぞれありますが
244
+
245
+ イメージすることが難しいのですが
168
246
 
169
247
  Storyboardが複数あると言うことはどう言うことですか?
170
248
 

4

訂正

2020/08/04 07:30

投稿

Ytan
Ytan

スコア39

test CHANGED
File without changes
test CHANGED
@@ -19,6 +19,8 @@
19
19
 
20
20
 
21
21
  もし上記ができる場合ViewControllerのitemsの情報をRegisterViewControllerでそれぞれ表示したいのですが
22
+
23
+ 値を遷移する場合のprepareForsegueを使うのですか?
22
24
 
23
25
 
24
26
 

3

訂正

2020/08/03 17:45

投稿

Ytan
Ytan

スコア39

test CHANGED
File without changes
test CHANGED
@@ -6,13 +6,13 @@
6
6
 
7
7
  RegisterViewControllerに遷移したいです。
8
8
 
9
- RegisterViewControllerでNavigationBarの戻るを押すとtViewControllerに戻るようにしたいです。
9
+ RegisterViewControllerでNavigationBarの戻るを押すとViewControllerに戻るようにしたいです。
10
10
 
11
11
 
12
12
 
13
13
  RegisterViewControllerのみNavigationControllerをつけることは可能ですか?
14
14
 
15
- ViewControllerにはNavigationBarがないようにしたいです。
15
+ ViewControllerにはNavigationBarがないようにしたいです。
16
16
 
17
17
  方法はありますか?
18
18
 

2

こーど追加

2020/08/03 17:44

投稿

Ytan
Ytan

スコア39

test CHANGED
File without changes
test CHANGED
@@ -1,24 +1,170 @@
1
1
  ### 疑問点
2
2
 
3
- firstVieControllerからsecondViewControllerに遷移する場合
3
+ ViewControllerからRegisterViewControllerに遷移する場合
4
4
 
5
- 遷移方法はfirstVieControllerのdidSelectRowAtでそれぞれのindexを押した時に
5
+ 遷移方法はViewControllerのdidSelectRowAtでそれぞれのindexを押した時に
6
6
 
7
- secondViewControllerに遷移したいです。
7
+ RegisterViewControllerに遷移したいです。
8
8
 
9
- secondViewでNavigationBarの戻るを押すとfirstVieControllerに戻るようにしたいです。
9
+ RegisterViewControllerでNavigationBarの戻るを押すとtViewControllerに戻るようにしたいです。
10
10
 
11
- secondViewControllerのみNavigationControllerをつけることは可能ですか?
12
11
 
12
+
13
+ RegisterViewControllerのみNavigationControllerをつけることは可能ですか?
14
+
13
- firstVieControllerにはNavigationBarがないようにしたいのです。
15
+ ViewControllerにはNavigationBarがないようにしたいのです。
14
16
 
15
17
  方法はありますか?
16
18
 
17
19
 
18
20
 
21
+ もし上記ができる場合ViewControllerのitemsの情報をRegisterViewControllerでそれぞれ表示したいのですが
22
+
23
+
24
+
25
+ ```FirstViewController
26
+
27
+ import UIKit
28
+
29
+
30
+
31
+ class ViewController: UIViewController {
32
+
33
+
34
+
35
+ @IBOutlet weak var table:UITableView!
36
+
37
+ var items:[Item] = [Item]()
38
+
39
+
40
+
41
+ override func viewDidLoad() {
42
+
43
+ super.viewDidLoad()
44
+
45
+
46
+
47
+ table.register(TableViewCell.nib(), forCellReuseIdentifier: TableViewCell.identifier)
48
+
49
+
50
+
51
+ table.delegate = self
52
+
53
+ table.dataSource = self
54
+
55
+ self.setupItems()
56
+
57
+ }
58
+
59
+
60
+
61
+ func setupItems(){
62
+
63
+ items = [Item(name:"a",date:"1"),Item(name:"b",date:"2"),Item(name:"c",date:"3"),Item(name:"d",date:"4"),Item(name:"e",date:"5"),]
64
+
65
+ }
66
+
67
+ }
68
+
69
+
70
+
71
+ extension ViewController: UITableViewDelegate,UITableViewDataSource{
72
+
73
+
74
+
75
+ func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
76
+
77
+ return items.count
78
+
79
+ }
80
+
81
+
82
+
83
+ func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
84
+
85
+ let cell = tableView.dequeueReusableCell(withIdentifier: TableViewCell.identifier, for: indexPath) as! TableViewCell
86
+
87
+ cell.setcell(item: items[indexPath.row])
88
+
89
+ return cell
90
+
91
+ }
92
+
93
+
94
+
95
+ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
96
+
97
+ // セルの選択を解除
98
+
99
+ tableView.deselectRow(at: indexPath, animated: true)
100
+
101
+ //疑問点です
102
+
103
+ }
104
+
105
+ ```
106
+
107
+ ```ここに言語を入力
108
+
109
+ import Foundation
110
+
111
+
112
+
113
+ class Item : NSObject{
114
+
115
+ var name:String
116
+
117
+ var date:String
118
+
119
+
120
+
121
+ init(name:String,date:String){
122
+
123
+ self.name = name as String
124
+
125
+ self.date = date as String
126
+
127
+ }
128
+
129
+ }
130
+
131
+
132
+
133
+ ```
134
+
135
+ ```RegisterViewController
136
+
137
+ import UIKit
138
+
139
+
140
+
141
+ class RegisterViewController: UIViewController {
142
+
143
+ @IBOutlet weak var registeredNameLabel: UILabel!
144
+
145
+ @IBOutlet weak var registeredDateLabel: UILabel!
146
+
147
+
148
+
149
+ override func viewDidLoad() {
150
+
151
+ super.viewDidLoad()
152
+
153
+ // Do any additional setup after loading the view.
154
+
155
+ }
156
+
157
+
158
+
159
+ ```
160
+
161
+
162
+
19
163
  追記
20
164
 
21
- 同じStoryboardと異なるStoryboardありますがイメージすることが難しいのですが
165
+ 同じStoryboardと異なるStoryboardで遷移方法がそれぞれありますがイメージすることが難しいのですが
166
+
167
+ Storyboardが複数あると言うことはどう言うことですか?
22
168
 
23
169
  上記の場合だとどうなるのですか?
24
170
 

1

追記

2020/08/03 17:43

投稿

Ytan
Ytan

スコア39

test CHANGED
File without changes
test CHANGED
@@ -1,13 +1,27 @@
1
1
  ### 疑問点
2
2
 
3
- VieControllerからsecondViewControllerに遷移する場合
3
+ firstVieControllerからsecondViewControllerに遷移する場合
4
+
5
+ 遷移方法はfirstVieControllerのdidSelectRowAtでそれぞれのindexを押した時に
6
+
7
+ secondViewControllerに遷移したいです。
8
+
9
+ secondViewでNavigationBarの戻るを押すとfirstVieControllerに戻るようにしたいです。
4
10
 
5
11
  secondViewControllerのみNavigationControllerをつけることは可能ですか?
6
12
 
13
+ firstVieControllerにはNavigationBarがないようにしたいのです。
14
+
7
- またその方法を教えてもらいたいで
15
+ 方法はありまか?
8
16
 
9
17
 
10
18
 
11
- 遷移方法はVieControllerのdidSelectRowAtでそれぞれのindexを押した時に
19
+ 追記
12
20
 
21
+ 同じStoryboardと異なるStoryboardとありますがイメージすることが難しいのですが
22
+
23
+ 上記の場合だとどうなるのですか?
24
+
13
- secondViewControllerに遷移したいです
25
+ ViewControllerを増やすことがStoryboardを増やすわけではないですよね?
26
+
27
+ 根本が曖昧ですみません。