我目前有一个 UISearchBar 和 UIDisplayController 在我的 RootViewController 中定义为:
- (void)viewDidLoad {
[super viewDidLoad];
//Add the search bar
aSearchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
[aSearchBar sizeToFit];
aSearchBar.delegate = self;
aSearchBar.placeholder = @"Search YouTube...";
self.tableView.tableHeaderView = aSearchBar;
searchDC = [[UISearchDisplayController alloc] initWithSearchBar:aSearchBar contentsController:self];
[self performSelector:@selector(setSearchDisplayController:) withObject:searchDC];
searchDC.delegate = self;
searchDC.searchResultsDataSource = self;
searchDC.searchResultsDelegate = self;
[aSearchBar release];
[searchDC release];
}
当触发搜索按钮时,将执行此事件以运行 API 调用:
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
[videoList removeAllObjects];
if (searchBar.text.length > 0) {
NSString *searchCriteria = [searchBar.text stringByReplacingOccurrencesOfString:@" " withString:@"+"];
YTJAppDelegate *appDelegate=(YTJAppDelegate*)[[UIApplication sharedApplication] delegate];
[appDelegate searchWithCriteria:searchCriteria];
}
}
数据获取正确。然而。只有当我在搜索中点击“取消”按钮时,它才会变得可见。
如何在数据源更新/搜索按钮被点击时正确更新 View ?我需要实现一个特殊的 SearchDelegate 方法吗?
最佳答案
关联 TableView 的代码可能会有帮助,但我猜你不会在搜索完成后调用 [self.tableView reloadData]
关于iPhone UISearchBar View 没有立即更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3639293/