У меня есть UITableView, и моя ячейка прототипа состоит из метки и TextField. У меня также есть класс MyClass, который содержит функции func1, func2, fun3, ... У меня есть несколько ViewController, которые используют один и тот же прототип tableViewCell. Каждый viewController будет иметь экземпляр MyClass, называемый inst1, inst2 и inst3. Когда я ввожу текст в TableView FirstViewController, я хочу, чтобы каждая строка вызывала функцию из экземпляра MyClass, которая соответствует строке.
Поэтому, когда я вводю текст в строку 1 на FirstViewController, я хочу передать данные, введенные в textField, в func1 of inst1. Когда данные вводятся в строку 2 FirstViewController, я хочу, чтобы данные в текстовом поле передавались в func2 of inst1. И так далее, и так далее по строкам.
Я очень новичок в этом и буду очень признателен за помощь в выяснении, как это сделать. Дайте мне знать, если это не имеет смысла, и я могу попытаться перефразировать это. Мне действительно нужна помощь с этим. Заранее спасибо!
* Обновлен вопрос, чтобы показать мой код
Ниже мой код:
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, он никогда не запускает этот код.