use*_*456 5 uitableview ios swift
我目前正在开发一项功能,可在键入时动态更改 UITableView 单元格的高度。因此,如果用户输入了一个扩展单元格当前最大宽度的项目,那么单元格的高度应该增加。我的专用 TableViewCell 包含一个 TextView 和一个 UILabel 并且还连接到它下面的另一个单元格。因此,在一个 TableView 中有一个带有两个 TableViewCell 的 TableView。我一直在尝试尝试可以解决的方法,但到目前为止没有任何效果。有没有人有任何概念性的想法来完成它?
首先将您的 tableView rowHeight 设置为UITableViewAutomaticDimension,在您的表格视图单元格中添加带有顶部、前导、底部和尾部约束的 UITextView。设置textView.isEditable要true和textView.isScrollEnabled到false,然后实现TextView的委托方法textViewDidChange。当文本更改时,您需要向视图控制器报告以更新 tableview,一种方法是通过委托。在您的视图控制器中实现您的表格视图单元格委托,您将从那里调用tableView.beginUpdates()和tableView.endUpdates()。就是这样。下面是一个经过测试的工作示例。
你的视图控制器:
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()
}
}
Run Code Online (Sandbox Code Playgroud)
你的手机:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
示例项目在这里:https : //github.com/bavarskis/ExpandingTableViewCell.git
| 归档时间: |
|
| 查看次数: |
783 次 |
| 最近记录: |