相关疑难解决方法(0)

10
推荐指数
2
解决办法
5148
查看次数

UISearchDisplayContoller - 在搜索栏中键入时无法阻止表重新加载

我正在尝试设置搜索显示控制器来处理来自Web服务的异步结果.我已经掌握了基本功能,但遇到了一个我无法弄清楚的奇怪问题.

似乎是为了安装搜索显示控制器以实现异步,你真的需要做两件事:

  1. 为searchDisplayController返回NO:shouldReloadTableForSearchString,and
  2. 处理searchBarSearchButtonClicked并触发表重装自己.

我正在做这两件事,但我看到的是搜索显示控制器正在重新加载输入到搜索栏中的第一个字符的表,即使我按照#1返回NO.它不会在输入的后续字符上重新加载.

所以,我的问题是:如何在用户输入时让搜索显示控制器不再尝试重新加载表格?(特别是输入的第一个字符)

我已经看到这个问题被提到作为其他几个问题的一部分,但我还没有看到问题的直接答案.在我采用一堆UI修改工作之前,我想了解发生了什么或者我做错了什么.

这是我的代码的快速提炼,以显示问题.当我运行它并在搜索栏中输入"abcde"时,在输入"a"后,结果显示为"#0","a#2"等.在我点击搜索按钮之前,它们不会再次更新然后你会看到"abcde#0","abcde#1"等.当然,在我点击搜索按钮之前,没有任何结果.

#pragma mark -
#pragma mark UISearchDisplayController Delegate Methods

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
    return NO;
}

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption {
    return NO;
}


#pragma mark -
#pragma mark UISearchBarDelegate Methods

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
    [self.searchDisplayController.searchResultsTableView reloadData];

}


#pragma mark -
#pragma mark Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 20;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString …
Run Code Online (Sandbox Code Playgroud)

iphone uitableview uisearchbar uisearchdisplaycontroller

7
推荐指数
1
解决办法
7238
查看次数