UITableViewController 中行单元格边框的重复

发布于 2024-12-04 20:21:31 字数 248 浏览 0 评论 0原文

我在 UITableViewController 中有一个搜索控制器。当我滚动记录时一切正常,但当我处于搜索模式时就会出现问题。从搜索控制器返回的结果集表现得很奇怪。如果我开始滚动,则带有单元格和边框的整行开始正常滚动,但初始单元格边框出现在屏幕顶部并保持固定在初始边框位置。所以我遇到了重叠的双行单元格边框。有谁知道是什么原因导致这种行为?

更新:看起来如果搜索结果包含更多行(如 9),则滚动行为正常。但如果有 3 或 4 行,就会出现那些奇怪的固定单元格边框。

I have a search controller in UITableViewController. Everything is OK when I'm scrolling through the records, but the problem appears when I'm in search mode. The result set returned from search controller behaves very strange. If I start to scroll then the whole rows with cells and borders start to scroll normally but then the initial cell borders appears on top of the screen and stays fixed at the initial border positions. So I'm experiencing double row cell borders that overlaps. Does anybody know what causes such behavior?

UPDATE: it looks like if the search result contains more rows (like 9) then the scroll behaves normally. But if there are 3 or 4 rows then those weird fixed cell borders appear.

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

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

发布评论

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

评论(1

夏见 2024-12-11 20:21:31

最后,我发现了问题所在。问题是我意识到使用搜索时有不同的 tableView:tableView 和 searchResultsTableView。后者可通过 self.searchDisplayController.searchResultsTableView 访问。因此,我有一个对输入搜索文本做出反应的委托方法:

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{

    if ([searchText length] == 0) {

      [self resetSearchFilters];

    } else {    

       //apply search criteria
   }

  //[self.tableView reloadData]; // that was causing duplication

  [self.searchDisplayController.searchResultsTableView reloadData];
}

看起来我需要重新加载 searchResultsTableView 而不是主 tableView。

Finally, I found the problem. The thing is I realized that there are different tableViews when using search: the tableView and searchResultsTableView. The latter is accessible via self.searchDisplayController.searchResultsTableView. So, I have a delegate method that reacts to input search text:

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{

    if ([searchText length] == 0) {

      [self resetSearchFilters];

    } else {    

       //apply search criteria
   }

  //[self.tableView reloadData]; // that was causing duplication

  [self.searchDisplayController.searchResultsTableView reloadData];
}

It looks like I needed to reload searchResultsTableView instead of main tableView.

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