ios - UITableViewCell 未在 "Live"中自动调整大小

标签 ios swift uitableview autolayout uisearchbar

一点背景

我正在为我的应用程序中的一些公告提供搜索功能。我在 UITableView 中加载初始公告带有要显示的自定义单元格。 viewDidLoad()中实现动态单元格大小AnnouncementTableViewController的方法我的类(class)使用自动调整大小技术:

tableView.estimatedRowHeight = tableView.rowHeight
tableView.rowHeight = UITableViewAutomaticDimension

这非常适合显示不同高度的单元格。调用tableView.reloadData()刷新单元格数据效果很好。

我有一个不同的UITableView最初显示一个空白的表格 View 和 UISearchBar作为标题。我实现UISearchBarDelegate方法searchBar(_:textDidChange:) ,执行我的搜索过滤器逻辑并将过滤后的公告附加到 filteredAnnouncements数组。

我调用tableView.reloadData() didSet中的方法对于filteredAnnouncements .

问题

当我在搜索栏中输入内容时,单元格不会自动调整大小,事实上它们是默认高度。我为每个公告都有一个标题和正文,因此正文会被切断。

UITableViewCells cut off the body of the announcement

我尝试过的

UITableAutomaticDimension这个技巧似乎不适用于实时搜索(每次按键后都会更新)。我尝试调用tableView.setNeedsDisplay() , tableView.setNeedsUpdatedConstraints , tableView.setNeedsLayout()didSet filteredAnnouncements的观察者数组。

我尝试覆盖 didMoveToSubview()自定义单元格类中的方法来根据旧的 stackoverflow 问题调用上面命名的不同方法,但都没有运气。

编辑:回答下面自己的问题

最佳答案

调用beginUpdatesendUpdates表格上的 会强制它重新计算所有行的高度。

我认为,如果您实现 UITableView 的行插入/删除方法,您会发现整个体验变得更加轻松(并且让您的用户更加满意!)而不是使用reloadData .

关于ios - UITableViewCell 未在 "Live"中自动调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31468277/

相关文章:

ios - PHImageManager 的方法 "requestImageDataForAsset"在 Swift 中导致崩溃

objective-c - 在 UITableView Objective-C 中滚动更改数据

ios - 如何将 UITableViewCell 标签复制到 nextView 中的 UILabel ?

ios - UITableViewCell 并在单元格中重新定位 UILabels

iOS:iMessage 样式的页眉和分隔线 UI

objective-c - 从 iPhone 中的 NSString 中删除字符问题

ios - GoogleCast.framework 出现重复符号错误

macos - 如何为嵌套的 [NSObject : AnyObject] dictionaries? 赋值

ios - iPhone 6有前置闪光灯吗

ios - 如何调整 UITableViewController 中的部分和行?