質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

414閲覧

swiftのtableviewでcellの戻るに関して教えてください

siva

総合スコア1

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2023/01/25 06:07

前提

swiftでiPhoneアプリを作成中です。
Tableviewで①cellをタップすると、タップした①cellに関連項目が②cellに表示されます。

実現したいこと

②cellの時に「戻る」がないので、①cellに戻れません。
戻れる方法を教えていただけませんか。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

swift

class ViewController: UIViewController, UITableViewDelegate,UITableViewDataSource {

@IBOutlet weak var tableView: UITableView! @IBOutlet weak var nameLbl0: UILabel! var _objects = [[String:String]]() //let meshi = ["ラーメン","カレー","ピザ","寿司"] let meshi = [["name":"ラーメン","file":"ramen"], ["name":"カレー","file":"curry"], ["name":"ピザ","file":"pizza"], ["name":"寿司","file":"sushi"]] let ramen = [["name":"戻る"],["name":"醤油ラーメン"],["name":"味噌ラーメン"],["name":"豚骨ラーメン"],["name":"塩ラーメン"],["name":"豚骨醤油ラーメン"]] let curry = [["name":"ビーフカレー"],["name":"カツカレー"],["name":"チキンカレー"],["name":"ポークカレー"],["name":"スープカレー."]] let pizza = [["name":"マルゲリータ"],["name":"マリナーラ"],["name":"ペスカトーレ"],["name":"オルトラーナ"],["name":"パルマ"],["name":"カラブレーゼ"]] let sushi = [["name":"大トロ"],["name":"中トロ"],["name":"マグロ"],["name":"ウニ"],["name":"いくら"]] override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self // Do any additional setup after loading the view. _objects = meshi } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return _objects.count } func numberOfSections(in tableView: UITableView) -> Int { return 1 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) let cellValues = _objects[(indexPath as NSIndexPath).row] let namelabel = cell.contentView.viewWithTag(1) as! UILabel namelabel.text = cellValues["name"] return cell } func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let cellValues = _objects[(indexPath as NSIndexPath).row] print("cellValues:",cellValues) nameLbl0.text = cellValues["name"] let filename = cellValues["file"] if filename == "ramen"{ _objects = ramen }else if filename == "curry"{ _objects = curry }else if filename == "pizza"{ _objects = pizza }else if filename == "sushi"{ _objects = sushi } print("_objects:",_objects) tableView.reloadData() print("_objects:",_objects) tableView.reloadData() } } func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 100 }

}

### 試したこと let ramenに”戻る”を入れて試しましたが、記載内容が分かりません。 ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

didSelectRowAt のdelegateメソッドの中で、タップしたセルが「戻る」表示のセルか判定し、戻る表示のセルなら _objectsmeshi を格納して tableView.reloadData() を実施すればよいと思います。

swift

1 if cellValues["name"] == "戻る" { 2 _objects = meshi 3 tableView.reloadData() 4 return 5 }

投稿2023/01/29 08:41

TakeOne

総合スコア6299

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

siva

2023/01/30 08:49

問題解決できました。すごく助かりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問