gpt4 book ai didi

ios - 如何使 UITableView 单元格在用户键入时动态更改其高度?

转载 作者:可可西里 更新时间:2023-11-01 00:56:26 25 4
gpt4 key购买 nike

我目前正在研究一种在键入时动态更改 UITableView 单元格高度的功能。因此,如果用户输入的项目扩展了单元格的当前最大宽度,则单元格的高度应该增加。我的专用 TableViewCell 包含一个 TextView 和一个 UILabel,并且还连接到它下面的另一个单元格。因此,在一个 TableView 中有一个 TableView 和两个 TableViewCell。我一直在尝试尝试解决它的方法,但到目前为止没有任何效果。有没有人有任何概念性的想法来完成它?

最佳答案

首先将您的 tableView rowHeight 设置为 UITableViewAutomaticDimension,在您的表格 View 单元格中添加带有顶部、前导、底部和尾随约束的 UITextView。将textView.isEditable设置为true,将textView.isScrollEnabled设置为false,然后实现textView委托(delegate)方法textViewDidChange 。当文本更改时,您需要报告给 View Controller 以更新 TableView ,一种方法是委托(delegate)。在您的 View Controller 中实现您的 TableView 单元格委托(delegate),您将从那里调用 tableView.beginUpdates()tableView.endUpdates()。而已。下面是一个经过测试的工作示例。

你的 View Controller :

import UIKit
class ViewController: UIViewController, UITableViewDataSource, ExpandingTableViewCellDelegate {

@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.register(UINib(nibName: "ExpandingTableViewCell", bundle: nil), forCellReuseIdentifier: "ExpandingTableViewCellIdentifier")
tableView.rowHeight = UITableViewAutomaticDimension
}

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

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ExpandingTableViewCellIdentifier", for: indexPath) as! ExpandingTableViewCell
cell.delegate = self
return cell
}

// Expanding teable view cell delegate
func didChangeText(text: String?, cell: ExpandingTableViewCell) {
tableView.beginUpdates()
tableView.endUpdates()
}
}

你的手机:

import UIKit
protocol ExpandingTableViewCellDelegate: class {
func didChangeText(text: String?, cell: ExpandingTableViewCell)
}

class ExpandingTableViewCell: UITableViewCell, UITextViewDelegate {
@IBOutlet weak var textView: UITextView!
weak var delegate: ExpandingTableViewCellDelegate?

override func awakeFromNib() {
super.awakeFromNib()

textView.delegate = self
textView.isEditable = true
textView.text = "Start typing: ..."
textView.isScrollEnabled = false
}

func textViewDidChange(_ textView: UITextView) {
delegate?.didChangeText(text: textView.text, cell: self)
}
}

示例项目在这里:https://github.com/bavarskis/ExpandingTableViewCell.git

关于ios - 如何使 UITableView 单元格在用户键入时动态更改其高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46573264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com