借助于此:
- (void)viewDidLoad {
[super viewDidLoad];
[self.searchDisplayController setActive:YES];
[self.searchDisplayController.searchBar becomeFirstResponder];
}
我想在视图加载时在搜索中显示键盘。它工作得很好,但它看起来很难看(为什么那里的白线?):
search table with white lines http://img42.yfrog.com/img42/7503/latest1.png
当我开始编写并删除所有字母时,它应该从头开始:
search table withour white lines http://img3.yfrog.com/img3/6176/testpn.png
我该如何解决这个问题?
我有另一个问题。当我开始输入内容时,即使在按下“搜索”按钮之前,它立即显示“无结果”,我该如何更改此行为?
search table with 'nothing found' http://img245.yfrog.com/img245/4366/bildschirmfoto20091014ui.png
答案 0 :(得分:1)
第一个问题似乎与时间有关。我得到了它的工作:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self performSelector:@selector(toTheSearchbar) withObject:self afterDelay:0];
}
- (void)toTheSearchbar {
[self.searchDisplayController setActive:YES];
[self.searchDisplayController.searchBar becomeFirstResponder];
}
即使延迟为0也能正常工作,没有它我会得到白线。
答案 1 :(得分:1)
“没有结果”的问题仍然是一个问题。我在苹果支持论坛上发现它没有以这种方式实现。所以我一直在寻找解决方法。你要做的第一件事是:
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
if([searchString length] < 1) [items removeAllObjects];
if ([items count] < 1) {
[controller.searchResultsTableView setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0.8]];
[controller.searchResultsTableView setRowHeight:800];
}
return YES;
}
这样你就得到一个看起来灰色和半透明的大桌子。当您重新加载searchTableView时,您想要更改此更改:
- (void)gotDataReload {
[self.searchDisplayController.searchResultsTableView reloadData];
[self.searchDisplayController.searchResultsTableView setBackgroundColor:[UIColor whiteColor]];
[self.searchDisplayController.searchResultsTableView setRowHeight:44];
}
希望这有助于下一个有这个问题的人。