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

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

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

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

TableView

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

1回答

374閲覧

TableViewのセルをタップしてからの画面推移が行われない。。[至急!]

Atsuya-11

総合スコア12

Realm

RealmとはSQLiteやCore Dataに代わるモバイルデータベースです。iOSとAndroidの両方でサポートされています。

TableView

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2020/01/15 04:50

編集2020/01/15 04:58

前提・実現したいこと

Todoアプリを作成しています。
タスクのセルをタップしたら、そのタスクのメモを書き込める画面に推移させたいです。

###現状起きている問題
セルをタップしても何も起きず、画面が推移しません。

該当のソースコード

推移元(タスク一覧画面)

import UIKit import RealmSwift class ViewController: UIViewController,UITableViewDataSource { var todoItems: Results<Todo>! @IBOutlet weak var table: UITableView! override func viewDidLoad() { super.viewDidLoad() table.dataSource = self let realm = try! Realm() todoItems = realm.objects(Todo.self) table.reloadData() //空のセルの区切り線を消す処理 table.tableFooterView = UIView() //ナビバーのタイトルを大きくする(スクロール時は小さくなる) navigationController?.navigationBar.prefersLargeTitles = true } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) table.dataSource = self let realm = try! Realm() todoItems = realm.objects(Todo.self) table.reloadData() } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return todoItems.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) let object = todoItems[indexPath.row] cell.textLabel?.text = object.title return cell } func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { if editingStyle == .delete { deleteTodo(at:indexPath.row) table.reloadData() } } var currentItem: String? = nil func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) currentItem = todoItems[indexPath.row].title self.performSegue(withIdentifier: "tomemo", sender: nil) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "tomemo" { let memoViewController:memoViewController = segue.destination as! memoViewController memoViewController.title = currentItem } } func deleteTodo(at index: Int) { let realm = try! Realm() try! realm.write { realm.delete(todoItems[index]) } } }

推移先(メモを書き込む画面)

import UIKit import RealmSwift class memoViewController: UIViewController { @IBOutlet weak var memo: UITextView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }

試したこと

いろいろな記事を参考に
self.performSegue(withIdentifier: "tomemo", sender: nil)
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
のやり方を真似たのですが推移できなかったです。

お力添えいただきたいです。。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ストーリーボード上でセグエにidentiferは設定されていますか?
あと、何も起きず、ではなく、print文やブレイクポイントを用いて
たとえばfunc tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) は呼び出されている、等くわしく把握するようにした方がいいと思います!

投稿2020/01/15 05:03

RyotaroIsoyama

総合スコア183

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

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

Atsuya-11

2020/01/15 05:07

セグエにidentiferは"tomemo"で設定しています。 一旦ブレイクポイント等で詳しく把握してみます!
Atsuya-11

2020/01/15 05:26

printを用いて検証したところ func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { tableView.deselectRow(at: indexPath, animated: true) print("hello world"); currentItem = todoItems[indexPath.row].title self.performSegue(withIdentifier: "tomemo", sender: nil) } の処理が働いていませんでした。 どうすればセルをタップした際にここが動くようになりますか?
RyotaroIsoyama

2020/01/15 05:30

あ、delegateですかね class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate { として、 table.dataSource = selfの下にtable.delegate = selfを追加する必要がありますね
Atsuya-11

2020/01/15 05:42

解決しました!! ありがとうございます! ただいま卒業研究でアプリを作成しておりまして、締め切りが近く作業が山場なのでこんなに早く回答くださり大変助かりました。。。! また近々質問を投稿させてもらうと思うのでその際はよろしくお願いいたします。。。
RyotaroIsoyama

2020/01/15 05:49

いえいえ! お互い研究がんばりましょう!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問