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

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

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

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

Swift

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

Q&A

解決済

1回答

232閲覧

TextFieldをソースコードで設定する方法

r.n

総合スコア7

Xcode

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

Swift

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

0グッド

1クリップ

投稿2018/04/06 20:40

編集2018/04/07 01:13

Outletをソースコードで設定したいです。

cell内のものなんですが、Buttonにactionをつけるの場合はaddTargetで設定できますよね。
TextFieldにOutletのをつける場合はどうやって設定できますか?
他の部品もそこで設定しているので同じ場所で設定しておいてあげたいんです。
もし他にも良い方法があれば補足として教えていただけると助かります。

追記

NSObjectを使用してます。
これからViewControllerに渡して、
ボタンを押したときにTextField内の文字をLabelに反映させたいです。

PostTableViewCell.swift

class PostTableViewCell: UITableViewCell { @IBOutlet weak var comentsTextField: UITextField! @IBOutlet weak var comentsButton: UIButton! var postArray: [PostData] = [] //略 func setPostData(_ postData: PostData) { //略 //文字を表示させるラベル self.captionLabel.text = "(postData.name!): (postData.coments)" }

PostData.swift

class PostData: NSObject { //略 var coments: [[String:String]] = [] init(snapshot: DataSnapshot, myId: String) { //略 if let coments = valueDictionary["coments"] as? [String:String]{ self.coments = [coments] } } }

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

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

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

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

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

guest

回答1

0

ベストアンサー

ご質問内容から考えると、storyboard上で繋げている(=outlet接続している)カスタムセル(自分で作成したセル)内のUITextFieldに対して
ソースコードでアクション(delegate)を設定したいということでしょうか?
(異なっていたらごめんなさい。どういう実装をされているか教えていただけましたら幸いです。)

例えば、
ViewControllerというUIViewControllerがあり、
カスタムセルにtextFieldというUITextFieldがcell内に設定されているとします。

class ViewController: UIVIewController { // これはCellからViewControllerに移動する // VieWillAppearなどで値は取得している前提で話を進めます var postArray: [PostData] = []
// ViewControllerの中のセルを設定しているメソッド func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { // (中略) //①UITextFieldDelegateを設定 cell.textField.delegate = self //②どのセルのUITextFieldかを知りたい場合は //tagに番号をつけて区別できるようにする方法などもあります    cell.textField.tag = indexPath.row // postArrayの中からcellに表示したいデータを取得する let post = postArray[indexPath.row] // cellに値を設定する cell.setPostData(post) // (以下略) } extension ViewController: UITextFieldDelegate { // ①上記でUITextFieldのdelegateにViewControllerを設定しているため、 // 下記のメソッドで全てのセルのUITextFieldの処理を受け取ることができる /* UITextFieldが編集された直前に呼ばれる */ func textFieldDidBeginEditing(_ textField: UITextField) { // ②上記で設定したtextField.tagからどの行のUITextFieldかを知ることができます。 print("tag: (textField.tag)") print("textFieldDidBeginEditing: (textField.text!)") } /* UITextFieldが編集された直後に呼ばれる */ func textFieldDidEndEditing(_ textField: UITextField) { print("textFieldDidEndEditing: (textField.text!)") } /* 改行ボタンが押された際に呼ばれる */ func textFieldShouldReturn(_ textField: UITextField) -> Bool { print("textFieldShouldReturn (textField.text!)") // 改行ボタンが押されたらKeyboardを閉じる処理. textField.resignFirstResponder() return true } }

投稿2018/04/06 22:07

編集2018/04/07 21:31
newmt

総合スコア1277

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

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

r.n

2018/04/07 01:17

回答ありがとうございます。 少し違っていたかわかりませんが、一応追記しました。 回答いただいた内容でできるのであれば、このままBAに選ばさせていただきます。 初心者なので意味不明かもしれませんがお願いしますorz
newmt

2018/04/07 21:16 編集

2つお伺いさせて頂きます。 1. setPostDataはcellに値を設定するときに呼ばれるメソッドでしょうか? 2. var postArray: [PostData] = []は一つのセルに設定される値ですか?それとも一つ一つの値をcellに設定するイメージでしょうか?
r.n

2018/04/07 14:36

1. 多分そうです! 2. 1つ1つに設定されているイメージだと思います!
newmt

2018/04/07 21:32

回答を追記しました。
r.n

2018/04/08 13:17

ありがとうございます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問