开始输入时,[searchDisplayController setActive]和“No results”上有白线

时间:2009-10-28 11:16:00

标签: iphone

借助于此:

- (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

2 个答案:

答案 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];
}

希望这有助于下一个有这个问题的人。