UITableView(Swift)のTextFieldごとに異なる関数を呼び出すにはどうすればよいですか?

win22jim

UITableViewがあり、プロトタイプセルはラベルとTextFieldで構成されています。関数func1、func2、fun3、...を含むクラスMyClassもあります。同じtableViewCellプロトタイプを使用するViewControllerがいくつかあります。各viewControllerには、inst1、inst2、およびinst3と呼ばれるMyClassのインスタンスがあります。FirstViewControllerのTableViewにテキストを入力するとき、各行がその行に対応するMyClassのインスタンスから関数を呼び出すようにします。

したがって、FirstViewControllerの行1にテキストを入力するときに、textFieldに入力したデータをinst1のfunc1に渡します。FirstViewControllerの行2にデータを入力するときに、テキストフィールドのデータをinst1のfunc2に渡す必要があります。などなど、行を下に移動します。

私はこれに非常に慣れていないので、これを行う方法を理解するのに助けていただければ幸いです。それが意味をなさない場合はお知らせください。言い換えることができます。私は本当にこれについて助けが必要です。前もって感謝します!

*私のコードを表示するように質問を更新しました

以下は私のコードです:FirstViewController.swift

extension FirstViewController: MyCellDelegate {
    func MyCell(_ cell: UITableViewCell, didEnterText text: String) {
        if let indexPath = tableView.indexPath(for: cell) {
            if (indexPath.hashValue == 0) {
                inst1.func1(one: text)
            }
            if (indexPath.hashValue == 1) {
                inst1.func2(two: text)
            }
        }
        totalText.text = inst1.getMyTotal()
    }
}

import UIKit

class FirstViewController: UIViewController,  UITableViewDataSource, UITableViewDelegate {
    let inst1 = MyClass()
    @IBOutlet weak var totalText: UILabel!
    @IBOutlet weak var tableView: UITableView!

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 11
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "myTableCell") as! TableViewCell
        let text = cell.cellData[indexPath.row]
        cell.myTextField.tag = indexPath.row
        cell.delegate = self
        cell.myLabel.text = text
        cell.myTextField.placeholder = text
        return cell
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.dataSource = self
        tableView.delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

TableViewCell.swift

import UIKit
protocol MyCellDelegate: class {
    func MyCell(_ cell: UITableViewCell, didEnterText text: String)
}

class TableViewCell: UITableViewCell {
    weak var delegate: MyCellDelegate?

    public var cellData: [String] = ["1","2","3","4","5","6","7","8","9","10","11"]

    @IBOutlet weak var myLabel: UILabel!

    @IBOutlet weak var myTextField: UITextField!

    override func awakeFromNib() {
        super.awakeFromNib()
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
    }
}

FirstViewController拡張機能にブレークポイントを設定すると、そのコードは実行されません。

Keshav Raj

WillDisplayCellのUITextFieldにタグを追加します。また、対応するviewControllerに通知するプロトコルを作成し、ここで自分自身をデリゲートとして設定します。

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
 let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier")
 cell.textField.tag = indexPath.row
 cell.delegate = self
 }

セルクラスのプロトコルは次のようになります

protocol MyCellDelegate: class {
func MyCell(_ cell: UITableViewCell, didEnterText text: String)
}

class MyCell: UITableViewCell, UITextFieldDelegate {
weak var delegate: MyCellDelegate?
override fun awakeFromNib() {
 super.awakeFromNib()
 textField.delegate = self
 }
//All the remaining code goes here


func textFieldShouldReturn(_ textField: UITextField) -> Bool {   //delegate method
textField.resignFirstResponder()
delegate?.MyCell(self, didEnterText: textField.text! )
return true
}
}

デリゲートに準拠しているFirstViewControllerで、これを実行します。

extension FirstViewController: MyCellDelegate {
 func MyCell(_ cell: UITableViewCell, didEnterText text: String) {
 if let indexPath = tableView.indexPathForCell(cell) {
   // call whichever method you want to call based on index path
  }
 }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Java 8で要素ストリームごとに異なる関数を呼び出すにはどうすればよいですか?

分類Dev

PHPで関数を異なる順序で呼び出すにはどうすればよいですか?

分類Dev

行ごとに異なるページに(mysqlから)変数を呼び出すにはどうすればよいですか?

分類Dev

JS関数をスパムの呼び出しごとに1回だけ実行するようにするにはどうすればよいですか?

分類Dev

Angular 2で10秒ごとに関数を呼び出すにはどうすればよいですか?

分類Dev

10秒ごとに関数を呼び出すにはどうすればよいですか?

分類Dev

特定の関数が呼び出されたときに関数を呼び出す関数を作成するにはどうすればよいですか?

分類Dev

多くの種類の異なる関数ポインタを返すC関数を呼び出すにはどうすればよいですか?

分類Dev

AS3:関数がフレームごとに複数回呼び出されないようにするにはどうすればよいですか?

分類Dev

1つの変数(rand()関数を含む)を呼び出して、常に異なる番号を取得するにはどうすればよいですか?

分類Dev

他の関数ではなく、REPLからのみ関数を呼び出すことを許可するにはどうすればよいですか?

分類Dev

関数を2回呼び出せないようにするにはどうすればよいですか?

分類Dev

2つの異なる関数から2つの変数を呼び出して追加するにはどうすればよいですか?(Python3)

分類Dev

AndroidEditTextに入力するときに関数を呼び出すにはどうすればよいですか

分類Dev

仮想の場合とそうでない場合に呼び出される関数を決定するにはどうすればよいですか?

分類Dev

すべてのデバイスで30秒ごとに同時に関数を呼び出すにはどうすればよいですか?

分類Dev

別のクラスから静的関数を呼び出すときに「存在しない」を修正するにはどうすればよいですか?

分類Dev

コントラクトコールごとに呼び出される関数を作成するにはどうすればよいですか?–堅牢性

分類Dev

他の関数のループの実行が完了したときに、swift で関数を呼び出すにはどうすればよいですか?

分類Dev

LLVMで関数呼び出しの引数を取得するにはどうすればよいですか?

分類Dev

関数呼び出しの後で変数を変更するにはどうすればよいですか?

分類Dev

関数呼び出しごとにFlask-RESTPlusでデコレータを使用するにはどうすればよいですか?

分類Dev

呼び出しているクラスと関数を知るにはどうすればよいですか?

分類Dev

複数のjQuerychange()メソッドで関数を呼び出すときに、関数を複数回呼び出さないようにするにはどうすればよいですか?

分類Dev

名前で呼び出さずに、関数の値とともにすべての変数を出力するにはどうすればよいですか?

分類Dev

関数を呼び出さずに関数を起動するにはどうすればよいですか?

分類Dev

関数呼び出しのselectで行全体を使用するにはどうすればよいですか?

分類Dev

べき等関数への追加の呼び出しを削除するにはどうすればよいですか?

分類Dev

この関数の呼び出しを単純化するにはどうすればよいですか?

Related 関連記事

  1. 1

    Java 8で要素ストリームごとに異なる関数を呼び出すにはどうすればよいですか?

  2. 2

    PHPで関数を異なる順序で呼び出すにはどうすればよいですか?

  3. 3

    行ごとに異なるページに(mysqlから)変数を呼び出すにはどうすればよいですか?

  4. 4

    JS関数をスパムの呼び出しごとに1回だけ実行するようにするにはどうすればよいですか?

  5. 5

    Angular 2で10秒ごとに関数を呼び出すにはどうすればよいですか?

  6. 6

    10秒ごとに関数を呼び出すにはどうすればよいですか?

  7. 7

    特定の関数が呼び出されたときに関数を呼び出す関数を作成するにはどうすればよいですか?

  8. 8

    多くの種類の異なる関数ポインタを返すC関数を呼び出すにはどうすればよいですか?

  9. 9

    AS3:関数がフレームごとに複数回呼び出されないようにするにはどうすればよいですか?

  10. 10

    1つの変数(rand()関数を含む)を呼び出して、常に異なる番号を取得するにはどうすればよいですか?

  11. 11

    他の関数ではなく、REPLからのみ関数を呼び出すことを許可するにはどうすればよいですか?

  12. 12

    関数を2回呼び出せないようにするにはどうすればよいですか?

  13. 13

    2つの異なる関数から2つの変数を呼び出して追加するにはどうすればよいですか?(Python3)

  14. 14

    AndroidEditTextに入力するときに関数を呼び出すにはどうすればよいですか

  15. 15

    仮想の場合とそうでない場合に呼び出される関数を決定するにはどうすればよいですか?

  16. 16

    すべてのデバイスで30秒ごとに同時に関数を呼び出すにはどうすればよいですか?

  17. 17

    別のクラスから静的関数を呼び出すときに「存在しない」を修正するにはどうすればよいですか?

  18. 18

    コントラクトコールごとに呼び出される関数を作成するにはどうすればよいですか?–堅牢性

  19. 19

    他の関数のループの実行が完了したときに、swift で関数を呼び出すにはどうすればよいですか?

  20. 20

    LLVMで関数呼び出しの引数を取得するにはどうすればよいですか?

  21. 21

    関数呼び出しの後で変数を変更するにはどうすればよいですか?

  22. 22

    関数呼び出しごとにFlask-RESTPlusでデコレータを使用するにはどうすればよいですか?

  23. 23

    呼び出しているクラスと関数を知るにはどうすればよいですか?

  24. 24

    複数のjQuerychange()メソッドで関数を呼び出すときに、関数を複数回呼び出さないようにするにはどうすればよいですか?

  25. 25

    名前で呼び出さずに、関数の値とともにすべての変数を出力するにはどうすればよいですか?

  26. 26

    関数を呼び出さずに関数を起動するにはどうすればよいですか?

  27. 27

    関数呼び出しのselectで行全体を使用するにはどうすればよいですか?

  28. 28

    べき等関数への追加の呼び出しを削除するにはどうすればよいですか?

  29. 29

    この関数の呼び出しを単純化するにはどうすればよいですか?

ホットタグ

アーカイブ