在4个单元格中仅添加了1个SubView

时间:2018-09-13 06:53:01

标签: swift uitableview

代码如下

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行。

用于细胞的标题是苹果,香蕉,葡萄,梨。

但仅将1个子视图添加到第四行“梨”中。

问题1。为什么不将3个子视图添加到行中?

问题2。如何为所有行添加子视图?

谢谢

1 个答案:

答案 0 :(得分:1)

由于只有一个FruitsTextField实例,因此它只能是一行的子视图。因此,

  • 将其添加到第2行时,它将从第一行中删除
  • 将其添加到第3行时,将从第二行中删除

以此类推。

主要问题是,不应重复使用每个cellForRow子视图,因为正在重复使用单元格,因此即使每个单元格都有不同的文本视图,也可能会得到更多的子视图每个单元格中只有一个文本视图。

最好创建自己的自定义UITableViewCell子类,该子类将文本视图保留为子视图,连接插座并继续进行下去。您可以在网上找到几个示例,只需检查“ UITableViewCell子类”