搜索栏和搜索显示控制器在搜索后不显示结果

时间:2015-02-06 00:34:28

标签: objective-c arrays xcode uisearchbar uistoryboard

我目前正试图弄清楚为什么搜索栏和搜索显示控制器在用户提供输入后没有显示结果。

1。)我非常确信代表和所有内容都配置正确

2。)我已经设置了所有内容,因此我可以看到控制台NSLog正在重新调整数据

3。)这似乎没有产生任何结果:

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
    [self.searchDisplayController.searchResultsTableView reloadData];
}

4.。)数据已添加到NSMutableArray,但只显示空格

其他相关问题,这些细胞底部似乎有空白,为什么?此外,除searchBarCancelButtonClicked之外还有一种方法可以检测何时解除搜索视图/模式?我必须更改状态栏颜色......

任何帮助都会非常赞赏。

更多代码:

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    NSString *authorizedSearch = [searchBar.text stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];

        NSString *post = [NSString stringWithFormat:@"search=%@",authorizedSearch];
        NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
        NSString *postLength = [NSString stringWithFormat:@"%lu",(unsigned long)[postData length]];
        NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
        [request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"blahblahblah/search.php"]]];
        [request setHTTPMethod:@"POST"];
        [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
        [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
        [request setHTTPBody:postData];
        NSURLConnection *conn = [[NSURLConnection alloc]initWithRequest:request delegate:self];
        if(conn) {
            NSLog(@"Connection Successful");
        }else{

        }


    return YES;
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData*)data{
    NSString *ret = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    NSLog(@"DATA: %@", ret);
    NSArray *objectArray=[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
    [resultsJson addObject:objectArray];
    [resultsJson addObject:@"1"];
    NSLog(@"results: %@",resultsJson);
    NSLog(@"count: %i",[resultsJson count]);

}

1 个答案:

答案 0 :(得分:0)

cellForRowAtIndexPath:看起来像什么?

您使用的是:

[tableview dequeueReusableCellWithIdentifier:CellIdentifier];

或:

[tableview dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

似乎应该没有区别,但我认为有。

您是否为每个后备存储设置正确的数据?


结果到达并试图渲染它们会有竞争条件吗?


如果您确定数据是正确的,可能是自动布局(或类似)问题混乱了吗?我已经经常发生这种情况并通过调整所有内容来解决:-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath


请在此处查看底部空白处的可能的原因: Stop UISearchDisplayController from showing empty cells