出于某种原因 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中的示例项目,带状态恢复的简单UISearchBar ,xcdoc://ios/samplecode/TableSearch/Introduction/Intro.html
1)在APLViewController.m中找到搜索委托方法并在其下面添加:
- (void)searchDisplayController:(UISearchDisplayController *)controller willUnloadSearchResultsTableView:(UITableView *)tableView {
NSLog(@"willUnloadSearchResultsTableView");
}
2)在iOS6设备上运行应用程序并将一些文本打入搜索视图,然后点击“取消”按钮。您应该在控制台日志中看到文本“willUnloadSearchResultsTableView”。
3)现在尝试在iOS7设备/模拟器上运行相同的代码。这次,当您点击取消按钮时,您将看不到任何写入控制台日志的内容。
任何人都可以对此有所了解吗?
对我来说这是一个真正的问题,因为我已经在Tab导航器中添加了一个自定义搜索项,并使用搜索结果的数量更新了item-label。我在用户卸载搜索视图时恢复原始标签项标签,但在iOS7中无法恢复。
答案 0 :(得分:2)
Apple可能会更改表视图缓存机制,并且不会以与以前相同的模式卸载表。
如果您认为这是Apple方面的错误,请务必在https://bugreport.apple.com打开错误报告。
与此同时,尝试将代码移动到以下委托方法:
– searchDisplayController:willShowSearchResultsTableView:
– searchDisplayController:didShowSearchResultsTableView:
– searchDisplayController:willHideSearchResultsTableView:
– searchDisplayController:didHideSearchResultsTableView: