0

我正在尝试使用 searchString 预加载 UISearchBar。

在当前设置中。我在 UITableViewController 中使用 UISearchDisplayController。

我使用的第一种方法是在以下方法中设置搜索字符串:

- (void) presetSearchDisplayControllerWithString:(NSString*)searchString{
    [self.searchDisplayController setActive:YES animated:NO];
    [self.tableView setContentOffset:CGPointMake(0, 0)];
    self.searchBar.text = searchString;
    self.searchFetchedResultsController = [self   createFetchedResultsControllerWithSearchTerm:searchString];
}

有用。UISearchbar 显示搜索字符串,隐藏原始 tableView 和 TableViewIndex。但是,如果我按下 searchBar 上的取消按钮,它会崩溃:

* -[UISearchDisplayController setActive:animated:], /SourceCache/UIKit_Sim/UIKit-2372/UISearchDisplayController.m:682 中的断言失败 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“搜索内容导航控制器不得在 -setActive:YES 和 -setActive:NO 之间更改” *

第二个变量也不起作用

- (void) searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller {
    [self.searchDisplayController.searchBar setText:@"rune"];
}

好吧,如果您点击搜索栏,它就会起作用。但在你完成之前,它只显示一个常规的 tableView。

4

1 回答 1

0

您是否尝试过这样的事情(仅基于引发的异常):

[self.searchDisplayController setActive:NO animated:NO];
self.searchBar.text = searchString;
[self.searchDisplayController setActive:YES animated:NO];
[self.tableView setContentOffset:CGPointMake(0, 0)];
self.searchFetchedResultsController = [self createFetchedResultsControllerWithSearchTerm:searchString];
于 2013-01-22T15:22:35.763 回答