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

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

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

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

Q&A

0回答

701閲覧

tableviewcell内にあるボタンを押すと遷移先のテキストに反映する

dai01

総合スコア1

Swift

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

0グッド

0クリップ

投稿2021/01/22 13:42

編集2021/01/22 14:49

##cell内にあるボタンを押すと遷移先にあるテキストに遷移元のテキスト反映する方法を探しています。

######Swift初心者です。
######ボタンを押した時だけ、画面遷移を行いtableviewのテキストを遷移先のテキストに反映させたいです。今現状は、下でかいたテキストは反映されるのですが、選択したtableviewcell内のテキストをどう取得するかがわかりません。

import UIKit import RealmSwift class baseViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UISearchBarDelegate{ @IBOutlet weak var baseTableView: UITableView! // 遷移先のViewControllerに渡す変数 var giveWord: String = "" var giveMeaning: String = "" var wordmeanings: [[String:String]] = [[:]] var doushi: [[String:String]] = [[:]] var meishi: [[String:String]] = [[:]] let koukoudoushi = [["abandon": "捨てる","abolish": "廃止する","absorb" : "吸収する","accelerate": "促進する"],["ban":"禁止する,kinnshisuru,banする"]] let koukoumeishi = [["abuse": "虐待", "access": "利用する権利", "accord": "一致/合意","acquaintance": "知人"]] override func viewDidLoad() { super.viewDidLoad() baseTableView.delegate = self baseTableView.dataSource = self doushi = koukoudoushi meishi = koukoumeishi // データの数(=セルの数)を返すメソッド func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return wordmeanings[section].keys.count } // 各セルの内容を返すメソッド func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { // 再利用可能な cell を得る let cell = tableView.dequeueReusableCell(withIdentifier: "tableCell", for: indexPath) doushi = koukoudoushi meishi = koukoumeishi let base1 = cell.viewWithTag(1) as! UILabel//英単語のlable base1.text = Array(wordmeanings[indexPath.section].keys)[indexPath.row] let base2 = cell.viewWithTag(2) as! UILabel//単語の意味のlabel base2.text = Array(wordmeanings[indexPath.section].values)[indexPath.row] base2.lineBreakMode = .byCharWrapping//意味ラベルの改行の種類 base2.numberOfLines = 5//改行の行数 return cell } @IBAction func toMyListButton(_ sender: Any) { if giveWord == ""{ giveWord = "選択されたテキストの値を取得できるようにする" giveMeaning = "選択されたテキストの値を取得できるようにする" } else{** giveWord = "選択されたテキストの値を取得できるようにする" giveMeaning = "選択されたテキストの値を取得できるようにする" } } // segue で画面遷移する時に呼ばれる override func prepare(for segue: UIStoryboardSegue, sender: Any?){ let inputViewController:InputViewController = segue.destination as! InputViewController if segue.identifier == "toMyListSegue"{ let list = List() let allLists = realm.objects(List.self) if allLists.count != 0 { list.id = allLists.max(ofProperty: "id")! + 1 let toMyList = segue.destination as! InputViewController toMyList.receiveWord = giveWord toMyList.receiveMeaning = giveMeaning } inputViewController.list = list } } }

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

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

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

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

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

TsukubaDepot

2021/01/22 14:01

>ボタンを押した時だけ、画面遷移を行いtableviewのテキストを遷移先のテキストに反映させたいです。今現状は、下でかいたテキストは反映されるのですが、選択したtableviewcell内のテキストをどう取得するかがわかりません。 という部分がよくわからないのですが、正確にはどのように実現したいのでしょうか。 1) ボタンを押した時だけ、画面遷移を行いtableviewのテキストを遷移先のテキストに反映させたいです。 この「ボタン」というのは、どこに配置されているボタンのことなのでしょうか。TableView と違う場所なのか、それとも TableView なのかによって解釈が異なってくる。 2) 今現状は、下でかいたテキストは反映されるのですが、 これは、どこにどの様に反映されているのでしょうか。 3) 選択したtableviewcell内のテキストをどう取得するかがわかりません。 「選択」という動作はどの様にして実現しているのでしょうか。コードから推測する限り、TableView Cell から直接 Segue を引っ張ってきているように推測されるのですが、そのあたりはどのようになっているのでしょうか。 また、全体を通してご質問に関係のあるコード、無いコードが混在していてより一層わかりにくくなっています。 performSegue の中で Realm からオブジェクトを取り出す処理が入っていますが、これは今回の処理とは関係があるのでしょうか(登録している場所がないため、今回の問題とは関係ないように思えますが)。 getCellというプロパティ(変数)も定義されないまま突然現れていて、どのような意図で使われているのか掴みかねています(これは無視してもあまり関係なさそうですが)。 第三者にもわかるよう、丁寧な説明をお願いできますでしょうか(ご質問を直接編集されて構いません)。
dai01

2021/01/22 15:00

自分なりにコードを編集してみたのですが、かえって分かりにくくなってしまいました、すみません。 現状ですが、tableviewnocell内に英単語とその意味を表示するラベルと画面遷移を行うボタンを配置しています。cell内のボタンを押すと、遷移と同時に同じcellにある2つのラベルのテキストの値を遷移先のテキストに渡したいと思っています。 ボタンを押すと、画面の遷移はできているのですが、2つのラベルの値の取得方法がわかりません。
TsukubaDepot

2021/01/22 16:18

「cell内のボタン」を押して呼ばれるメソッドは、上記コードでいうところの「 @IBAction func toMyListButton(_ sender: Any) 」になるのでしょうか。
dai01

2021/01/22 16:51

はい、toMyListButtonがcellに配置しているボタンになります。
TsukubaDepot

2021/01/22 17:55

実装全体が見通せないので回答にかけるほどではないのですが、 UITableView のプロパティである indexPathForSelectedRow をみれば、その時に選択されている IndexPath がわかるので、それでアクセスしてみてはどうでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問