我有这些方法,并尝试刷新此表视图,当我收到服务器的响应时,但结果表不会重新加载。
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
[self filterContentForSearchText:searchString
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:[self.searchDisplayController.searchBar
selectedScopeButtonIndex]]];
return NO;
}
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSMutableString *webString = [[NSMutableString alloc] initWithFormat: @"http://dsadda.ru/common/actions/catalog.php?scode=kLg2sij45uJhj&text=%@", searchText];
webString = [[webString stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding] mutableCopy];
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration: config];
NSURLSessionTask *task = [session dataTaskWithURL: [NSURL URLWithString: webString] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
NSDictionary *answer = [NSJSONSerialization JSONObjectWithData: data options: 0 error: nil];
firmsList = [[NSMutableArray alloc] initWithArray:[answer objectForKey:@"FirmsList"]];
[[_searchController searchResultsTableView] reloadData];
}];
[task resume];
}
所以当我收到服务器的响应时,请告诉我如何重新加载这个tableView。
答案 0 :(得分:1)
这个问题太傻了。我忘了NSURLConnection在后台工作,我应该使用主线程重新加载表视图。
答案 1 :(得分:0)
每当您收到服务器的响应时,在完成处理程序的末尾只放[yourtableview reloadData]
。
如果这对您不起作用,则很可能是您的表视图委托方法存在问题。
检查这些委托方法:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
确保你的'公司列表'数组嵌入到这些委托方法中,这样当你调用[yourtableview reloadData]
时,新填充的'公司列表'数组就是表从中提取数据的内容。