Я пытаюсь сделать что-то относительно простое, но я не могу обойти это.У меня есть контроллер просмотра регистра, в который встроен UITableView.В TableView есть CustomsCells, встроенные три вида пользовательских ячеекПоследний из них настраивается с помощью поля UIText, и при выборе предполагается, что PickerView запускает снизу, чтобы пользователь мог выбрать там форму по своему желанию.Все работает хорошо, кроме одной мелочи;когда в любой строке выделен текст, должен быть ввод текстового поля, но этого не происходит.
Я пробовал несколько фрагментов кода в Интернете, но большинство из них касается текстового поля, находящегося в одном и том же ViewController, так как в этом случае поле UITextFieldDelegate связано с классом de CustomTableViewCell.Я попытался создать объект этого CustomTableViewCell, а затем просто коснулся переменной текстового поля и попытался изменить свойство текста, но результат просто пуст.
import UIKit
class RegisterViewController: UIViewController {
let registrationCell = RegisterViewCell()
let personalCell = PersonalViewCell()
var selectedRow : String = ""
let registerArray = ["UserName"]
let passwordArray = ["Password", "Confirm Password"]
let personalArray = ["I am"] //Identity of the user, female or male
let personalPickerArray = ["Famale", "Male"]
@IBOutlet weak var registerTableView: UITableView!
@IBOutlet weak var personalPickerView: UIPickerView!
override func viewDidLoad() {
super.viewDidLoad()
personalPickerView.isHidden = true
personalCell.personalTextField?.inputView = personalPickerView
}
Я создал расширения для TableView и PickerПосмотрите, где, я думаю, проблема здесь, но я не уверен:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let personalCell = tableView.dequeueReusableCell(withIdentifier: "PersonalViewCell", for: indexPath) as! PersonalViewCell
personalCell.personalLabel?.text = personalArray[0]
personalCell.personalTextField.text = selectedRow
personalCell.accessoryType = .disclosureIndicator
return personalCell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == 3 {
personalPickerView.isHidden = false
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let row = personalPickerArray[row]
selectedRow = row
personalPickerView.isHidden = true
print(selectedRow)
}
Файл пользовательского класса ячеек
import UIKit
class PersonalViewCell: UITableViewCell {
@IBOutlet weak var personalLabel: UILabel!
@IBOutlet weak var personalTextField: UITextField!
override func awakeFromNib() {
super.awakeFromNib()
}
}
Прямо сейчас, когда выбрана строка, я ожидаю получитьвход в UITextField, встроенный в пользовательскую ячейку «Персональная ячейка просмотра», но когда выбрана какая-либо строка, UITextField остается пустым