【发布时间】:2014-03-08 23:23:07
【问题描述】:
由于某种原因,UISearchDisplayController 委托方法 willUnloadSearchResultsTableView 在 iOS7 中停止工作。
它在我运行 iOS 6.1.3 的 4s 设备上可以正常工作,但在 iOS7 模拟器中不能正常工作。我已经尝试了带有 Xcode 5.0 的 7.0.3 和带有 Xcode 5.1 Beta 5 (5B103i) 的 7.1。
要对此进行测试,请在 Xcode 5 中打开示例项目,Simple UISearchBar with State Restoration,xcdoc://ios/samplecode/TableSearch/Introduction/Intro.html
1) 在 APLViewController.m 中找到搜索代理方法并在其下方添加:
- (void)searchDisplayController:(UISearchDisplayController *)controller willUnloadSearchResultsTableView:(UITableView *)tableView {
NSLog(@"willUnloadSearchResultsTableView");
}
2) 在 iOS6 设备上运行应用程序并将一些文本输入到搜索视图中,然后点击取消按钮。您应该会在控制台日志中看到文本“willUnloadSearchResultsTableView”。
3) 现在尝试在 iOS7 设备/模拟器上运行相同的代码。这一次,当您点击取消按钮时,您不会看到任何写入控制台日志的内容。
有人能解释一下吗?
这对我来说是一个真正的问题,因为我已将自定义搜索项添加到选项卡导航器并使用搜索结果的数量更新项目标签。当用户卸载搜索视图时,我恢复了原始选项卡项标签,但在 iOS7 中它没有恢复。
【问题讨论】:
-
可能是苹果改变了表格视图缓存机制,没有卸载表格。您可以尝试将代码移动到不同的委托方法。
-
不知道该怎么做,Leo。我需要知道何时卸载搜索视图。
-
为什么不使用
– searchDisplayController:didHideSearchResultsTableView:?
标签: objective-c ios6 ios7