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

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

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

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

Swift

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

Q&A

解決済

2回答

1430閲覧

TableViewControllerからViewControllerのテキストの内容を変化させたい。

ptpt

総合スコア22

Xcode

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

Swift

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

0グッド

0クリップ

投稿2016/07/30 02:24

編集2016/08/05 02:29

###前提・実現したいこと
TableViewControllerにあるボタンを押すと、ViewControllerへ遷移すると同時にViewControllerのTextViewに決まった文字(例えば"テスト"など)を表示するようにしたい。
ボタンは複数あり、対応するボタンごとに表示する文字は異なる。

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

遷移先のViewControllerにあるTextViewが空白のままになる。

###該当のソースコード

swift

1**ViewController** 2 3import UIKit 4 5class ViewController: UIViewController,TableViewControllerDelegate 6{ 7 8 @IBOutlet weak var mytext: UITextView! 9 10 override func viewDidLoad() { 11 super.viewDidLoad() 12 } 13 14 // Delegateで呼ばれる 15 func setText(text: String) { 16 mytext.text = text 17 } 18 19} 20 21 22**TableViewController** 23import UIKit 24 25protocol TableViewControllerDelegate: class { 26 func setText(text: String) 27} 28 29class TableViewController: UITableViewController{ 30 31 weak var delegate: TableViewControllerDelegate! 32 33 override func viewDidLoad() { 34 super.viewDidLoad() 35 } 36 37 @IBAction func zenbun(sender: AnyObject) { 38 // ボタン押下時にDelegateメソッドで値を設定する 39 delegate?.setText("test") 40 } 41 42}

前提の説明を修正しました。アドバイスお願いします。

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

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

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

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

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

taiju59

2016/08/04 09:17

前提がうまく把握できないので情報追加の依頼をさせてください。 実現したい流れは以下でしょうか? 1. ViewController(A) から TableViewController へ遷移 2. TableViewController でテキストを入力 3. TableViewController から ViewController(B) へ遷移、  この時、2 で入力したテキストを ViewController(B) で表示する もしこうだとすると、 TableViewController ⇄ ViewController(B) の画面遷移とテキスト受け渡しが問題なのであって、 ViewController(A)は関係ないのでは?と思うのですが、いかがでしょうか。 前提について、 関係のない ViewController(A) の記述を削除していただくか、 ViewController(A) が必要な理由の補足をお願いします。
ptpt

2016/08/04 12:29

関係ない説明を削除しました。よろしくお願いします。
guest

回答2

0

以下のdelegateを設定されている場所はデバックで通ることを確認されていますか?
通っているのであればTableViewControllerのボタンは表示されると思いますが、、、

swift

1if let next = segue.destinationViewController as? TableViewController { 2 // Delegateをselfに設定 3 next.delegate = self 4}

ViewController(A)から遷移した、TableViewControllerからViewController(B,冒頭のものとは別のもの)のテキストを変更したい。

こちらはStoryboardで設定されていますか?されているのでしたら以下のように設定すれば良いと思いますがいかがでしょう?

swift

1if let next = segue.destinationViewController as? ViewController { 2 next.mytext = text // TableViewControllerで設定したテキスト 3}

投稿2016/07/30 02:55

_Kentarou

総合スコア8490

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

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

ptpt

2016/08/03 11:58

ボタンは表示されるようになりましたが相変わらずViewController(B)が空白になってしまいます。アドバイスよろしくお願いします。
_Kentarou

2016/08/03 12:21

ViewController(B)に遷移するコードを記載してください。現在載せていいるコードではアドバイスのしようがありません。
ptpt

2016/08/04 00:24

storyboardを使っています。TableViewControllerにあるボタンを押すと遷移します。それと同時にViewController(B)のTextViewに文章を表示させたいです。
_Kentarou

2016/08/04 00:28

遷移部分はコードは一切書いていないということでしょか?
ptpt

2016/08/04 01:14

そうです。
guest

0

自己解決

シンプルに、遷移のコードとボタンを押したときにdelegateの値が変更されるようなコードを書いたら解決しました。

投稿2018/04/23 02:40

ptpt

総合スコア22

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問