当 UITableView 处于输入搜索文本模式时,如何正确旋转和重新加载 UITableView?
我正在实现 UITableViewController,它以纵向模式显示一个单元格,以横向模式显示两个单元格。我成功地重复使用带有标识符的单元格。另外,我有一个标志用于检查奇数记录并显示正确的记录数(在横向模式下省略右侧单元格)。另外,我正在使用搜索字段。
现在,我一切正常:表格正确旋转,搜索正确过滤记录。该问题出现在与输入搜索文本+旋转相关的情况下,例如:我正在启动应用程序,表格中充满了记录。然后,我在搜索字段中输入一些文本,然后过滤记录并在“textDidChange”中重新加载表格视图。该表成功过滤了3条记录。现在,我在输入搜索文本模式下旋转到横向模式。但现在,该表仅显示 2 条记录。
当我在输入搜索文本模式下开始旋转时,所有问题都会开始。该表遗漏了一些记录,在横向模式下遗漏了一些右侧单元格。我不知道它为什么会这样,因为我在“textDidChange”和“shouldAutorotateToInterfaceOrientation”方法中调用“[self.tableView reloadData]”。我缺少什么?
I'm implementing UITableViewController that displays one cell in portrait mode, and two cells in landscape mode. I'm successfully reusing cells with indetifiers. Also, I have a flag for checking odd number of records and displaying correct number of records (omitting right cell in landscape mode). Also, I'm using a search field.
Now, I have everything working: the table correctly rotates, search correctly filters the records. The problem appears on the situations related with enter-search-text + rotate, for example: I'm launching the app, the table fills with records. Then, I'm entering some text in search field, then filtering records and reloading tableview in "textDidChange". The table successfully filters 3 records. Now, I'm rotating to landscape mode while in enter-search-text mode. But now, the table displays only 2 records.
All the problems start when I'm starting to rotate while in enter-search-text mode. The table misses some records, misses some right cells in landscape mode. I don't know why it behaves because I'm calling "[self.tableView reloadData]" both in "textDidChange" and "shouldAutorotateToInterfaceOrientation" methods. What am I missing?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我在此找到了解决方案(帖子)。似乎有两种不同的 tableView 用于显示表中的行:一种用于默认模式下的 self.tableView,另一种用于“self.searchDisplayController.searchResultsTableView”(如果您使用的是搜索控制器)。所以,我用这段代码解决了我的问题:
I have found the solution in this (post). It appears that there are two different tableViews for displaying rows in table: one for self.tableView in default mode and another one for "self.searchDisplayController.searchResultsTableView" (if you are using a search controller). So, I have fixed my problem with this code:
您使用不同的 .xib 文件吗?另外,在
shouldAutorotateToInterfaceOrientation
中编写代码使用didRotateToInterfaceOrientation:
代替也是一种不好的方法。Are you using different .xib files? Also it's a bad way to write code in
shouldAutorotateToInterfaceOrientation
usedidRotateToInterfaceOrientation:
instead.