Только 1 SubView добавлен в 4 ячейки - PullRequest
0 голосов
/ 13 сентября 2018

Коды указаны ниже

class TableViewController: UITableViewController, UITextFieldDelegate {

let fruitsComponents: [String] = ["Apple", "Banana", "Grape", "Pear"]

let fruitsTextField = UITextField(frame: CGRect(x: 100, y: 7.5, width: 50, height: 30))

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

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

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


override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "fruitsCell", for: indexPath)

    cell.textLabel?.text = fruitsComponents[indexPath.row]
    fruitsTextField.backgroundColor = UIColor.darkGray
    fruitsTextField.delegate = self

    cell.addSubview(fruitsTextField)

    return cell
}

1 раздел в порядке.

4 строки в порядке.

Названия ячеек: Apple, Banana, Grape, Pear ok.

Но к «Груше», 4-й строке, добавлено только 1 подпредставление.

Вопрос1.Почему 3 подпредставления не добавляются в строки?

Вопрос2.Как я могу добавить подпредставления для всех строк?

Спасибо

1 Ответ

0 голосов
/ 13 сентября 2018

Так как у вас есть только один экземпляр fruitsTextField, он может быть только подпредставлением одной строки. Итак,

  • при добавлении в строку 2 он будет удален из первой строки
  • когда вы добавите его в строку 3, он будет удален из второй строки

и т. Д.

Основная проблема заключается в том, что вам не следует добавлять подпредставления при каждом вызове cellForRow, поскольку ячейки используются повторно, поэтому даже если у вас есть отдельное текстовое представление для каждой ячейки, вы можете получить более одного просмотр текста в каждой ячейке.

Гораздо лучше создать свой собственный подкласс UITableViewCell, который содержит текстовое представление в качестве подпредставления, подключать торговые точки и продолжать с ним. Вы можете найти несколько примеров в Интернете, просто проверьте «UITableViewCell подкласс»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...