1. UISearchDisplayController.searchResultsTableView 的frame指定只有在
didShowSearchResultsTableView委托调用之后,反正我觉得系统会改动它的大小位置,所以我不得不写了一个重新定位它的frame,来覆盖系统的默认设置。
2.
UISearchDisplayController.searchResultsTableView也能使用分组样式UITableViewStyleGrouped,只是没有现成的接口,你可以通过KVC机制修改它的私有变量_searchResultsTableViewStyle来达到目的。
3. 关于修改no results标签的问题。我觉得网上的答案,包括stackoverflow上的答案,很多都忽略了一个问题:在shouldReloadTableForSearchString委托中找到searchResultsTableView的label成员,然后将label.text修改为自己想要的描述。但是在第一次加载的searchResultsTableView的时候,它还没有加载子视图,no result 标签会修改失败。所以要推迟相关的子视图检测代码的执行:
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.001);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
for (UIView * subview in self.searchDC.searchResultsTableView.subviews) {
if ([subview isKindOfClass: [UILabel class]])
{
subview.hidden = YES;
}
}
});
4. 关于修改背景searchResultsTableView背景的问题:使用UITableViewStyleGrouped总会有一些麻烦,我个人是这么认为的。反正我在viewDidLoad接口里修改背景颜色是不成功的,够来在UISearchBar的委托方法里修改成功了。在用UITableViewStyleGrouped风格的时候,别忘了这一句:searchResultsTableView.backgroundView = nil,没有它你修改不了背景颜色。
5.一个关于searchResultsTableView的奇怪问题:搜索之后,我能得到searchResultsTableView正确的样式,但是在没有取消搜索的时候,我通过TabBar切换另一个页面(TabBar管理了两个页面,我搜索的是其中一个页面),然后再切回来,怪事发生了:
searchResultsTableView的宽和高都变为原来的两倍,我无法解释。
6.didLoadSearchResultsTableView委托方法的问题:通过模拟器测试,我发现它只会在willUnloadSearchResultsTableView调用后调用,也就是在searchResultsTableView unload之后,而不是在searchResultsTableView 加载完之后,这让我觉得非常奇怪,因为它的命名跟它的行为完全不符。
posted on 2013-05-28 19:42
Long 阅读(2810)
评论(1) 编辑 收藏 引用 所属分类:
iOS