一点背景
我正在为我的应用程序中的一些公告提供搜索功能。我在 UITableView
中加载初始公告带有要显示的自定义单元格。 viewDidLoad()
中实现动态单元格大小AnnouncementTableViewController
的方法我的类(class)使用自动调整大小技术:
tableView.estimatedRowHeight = tableView.rowHeight
tableView.rowHeight = UITableViewAutomaticDimension
这非常适合显示不同高度的单元格。调用tableView.reloadData()
刷新单元格数据效果很好。
我有一个不同的UITableView
最初显示一个空白的表格 View 和 UISearchBar
作为标题。我实现UISearchBarDelegate
方法searchBar(_:textDidChange:)
,执行我的搜索过滤器逻辑并将过滤后的公告附加到 filteredAnnouncements
数组。
我调用tableView.reloadData()
didSet
中的方法对于filteredAnnouncements
.
问题
当我在搜索栏中输入内容时,单元格不会自动调整大小,事实上它们是默认高度。我为每个公告都有一个标题和正文,因此正文会被切断。
我尝试过的
UITableAutomaticDimension
这个技巧似乎不适用于实时搜索(每次按键后都会更新)。我尝试调用tableView.setNeedsDisplay()
, tableView.setNeedsUpdatedConstraints
, tableView.setNeedsLayout()
在 didSet
filteredAnnouncements
的观察者数组。
我尝试覆盖 didMoveToSubview()
自定义单元格类中的方法来根据旧的 stackoverflow 问题调用上面命名的不同方法,但都没有运气。
编辑:回答下面自己的问题
最佳答案
调用beginUpdates
和endUpdates
表格上的 会强制它重新计算所有行的高度。
我认为,如果您实现 UITableView
的行插入/删除方法,您会发现整个体验变得更加轻松(并且让您的用户更加满意!)而不是使用reloadData
.
关于ios - UITableViewCell 未在 "Live"中自动调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31468277/