UITableView 普通样式部分标题在搜索视图上重绘

发布于 2024-11-27 05:07:56 字数 421 浏览 0 评论 0原文

当 tableView 位于搜索栏显示控制器的后台时,是否有人成功重新加载了 tableView?看照片看看发生了什么。

我有一个带有搜索显示控制器的 UITableViewController。当我在显示搜索显示控制器的表视图时对 UITableViewController 的表视图调用 reloadData 时,UITableViewController 中的部分视图标题将绘制到搜索显示控制器的视图上。

下面是一个快照,显示了搜索显示控制器视图之上的部分标题视图:

更新:我将代码简化为简单的搜索显示控制器和 UITableView。如果在 searchBar 处于活动状态的 tableView 上发生重新加载数据。该问题仍然发生。

在此处输入图像描述

Has anyone successfully reloaded a tableView, while the tableView is in the background of a searchbar display controller? See photo with what happens.

I have a UITableViewController with a search display controller. When I call reloadData on UITableViewController's tableview while the search display controller's table view is displayed, the section view header from the UITableViewController gets drawn onto the search display controller's view.

Here is a snapshot that shows the section title view ontop of the search display controller view:

Update: I simplified the code to a simple search display controller and UITableView. If reload data occurs on the tableView with the searchBar active. The issue still happens.

enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

空名 2024-12-04 05:07:56

我希望您知道您需要两个 UITableView 才能使搜索栏正常工作。当搜索处于活动状态时,您应该管理和显示搜索结果表,否则您应该管理和显示原始结果表。

来自Apple的文档:结果显示在由搜索显示控制器创建的表格视图中。

因此,您不应重新加载原始UITableView而是确保搜索结果表的数据源正确。

UISearchDisplayController 有一个名为 searchResultsTableView 的属性,您无需使用 reloadData 专门重新加载该属性。相反,它将通过 UISearchDisplayDelegate 协议中的方法进行更新,例如 searchDisplayController:shouldReloadTableForSearchString:

干杯,
萨沙

I hope you know that you need two UITableViews for a search bar to work. When the search is active, you should manage and display the search results table, otherwise your original one.

From Apple's documentation: The results are displayed in a table view that’s created by the search display controller.

Therefore, you should not reload the original UITableView but rather make sure your datasource for the search results table is correct.

UISearchDisplayController has a property called searchResultsTableView which you will not have to specifically reload with reloadData. Rather, it will be updated through the methods in the UISearchDisplayDelegate protocol, such as searchDisplayController:shouldReloadTableForSearchString:.

Cheers,
Sascha

谁把谁当真 2024-12-04 05:07:56

我遇到了这个问题。如果您的情况像我一样,原因是 [self.tableView reloadData] 重新绘制 self.tableView 标头标题,即使 self.tableView 位于 searchResultsTableView 下方。

[self.tableView reloadData] 被调用:1) 当我从表视图数据源获取数据时,2) 在我的 fetchedResultsController 的 setter 中。

此外,如果您的 tableView 控制器是 fetchedResultsController 的委托,则只要您的 Core Data 托管文档发生更改,它就会收到更新。这也导致标题被重新绘制。

解决方案:我在填充搜索结果时删除了[self.tableView reloadData]。另外,我删除了作为 fetchedResultsController 委托的 tableview 控制器。

I had this exact problem. If your case is like mine, the cause is [self.tableView reloadData] redrawing the self.tableView header title even when self.tableView is below the searchResultsTableView.

[self.tableView reloadData] was being called 1) when I was fetching from my table view data source and 2) in the setter for my fetchedResultsController.

Also, if your tableView controller is a delegate of fetchedResultsController, it receives updates whenever your Core Data managed document is changed. This was also causing the header to be redrawn.

Solution: I removed [self.tableView reloadData] when populating search results. Also, I removed the tableview controller as a delegate of fetchedResultsController.

走过海棠暮 2024-12-04 05:07:56

使用 NSLog 尝试检查 UITableView 中的剖面视图标题何时被准确绘制。
也许你可以弄清楚为什么会发生这种情况。然后尝试使用scrollEnabled = NO,正如您所想的那样。

Using NSLog try to check when is your section view header from UITableView gets drawn exactly.
May be you can then figure out why this is happening. Then try using scrollEnabled=NO, as you are thinking.

猫烠⑼条掵仅有一顆心 2024-12-04 05:07:56

您可以使用简单的 UISearchBar 因为没有对等代码,无法帮助您

You can use simple UISearchBar because without peer into your code, can not help you

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文