1

我想在用户开始搜索之前使用数据源中的所有数据加载搜索显示控制器的表格视图。

我用了

[self.searchDisplayController.searchResultsTableView reloadData];

在 viewDidLoad 但 UITableViewDataSource 委托方法

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

不会被调用。我的桌子空着。我在重新加载表视图之前手动填充了数据源(并在调试模式下验证了这一点),所以有数据可以用来填充单元格。

我知道我可以使用另一个表格视图来做到这一点,并在视觉上获得完全相同的结果,但我想知道是否只能使用搜索显示控制器的表格视图。

代码:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell;

    static NSString *cellIdentifier = @"Cell";

    cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if(cell == nil) {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }


    NSString *category = [searchResults objectAtIndex:[indexPath row]];
    cell.textLabel.text = category;

    cell.textLabel.font = [UIFont systemFontOfSize:14];
    cell.textLabel.numberOfLines = 0;
    cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping;


    return cell;
}
4

2 回答 2

1

您可能想看看这个 SO question。虽然从未尝试过。

告诉我它是否有帮助;-)

编辑 :

在您发表评论后,我尝试了答案,并且对我来说效果很好(正如他在回答中所说的那样,视图仍然很暗。但没有尝试将其删除)。

这是我在我的应用程序中尝试的代码:

- (void)viewDidLoad {
    [super viewDidLoad];
    _places = @[ [[RHPlace alloc] initWithName:@"name" address:nil distance:nil andFoursquareUID:@"plop"] ];
    [self.searchDisplayController.searchResultsTableView reloadData];
    CGRect testFrame = CGRectMake(0, 20, self.searchDisplayController.searchBar.frame.size.width, 100);
    self.searchDisplayController.searchResultsTableView.frame = testFrame;
    [self.searchDisplayController.searchBar.superview addSubview:self.searchDisplayController.searchResultsTableView];
}

这是我得到的结果: http: //cl.ly/image/0k0V3J3H1G1h

因此,如果它对您不起作用,我猜您在其他地方还有另一个错误。

于 2013-08-07T06:41:26.207 回答
0

可能是您在委托方法时在“searchResults”数组中添加数据...

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString

在您的情况下,您需要在搜索显示控制器的表格视图中没有搜索的全部数据可能不会调用上面的委托方法并且您的数组没有数据......因此您需要在重新加载搜索显示控制器的表格视图之前在“searchResults”数组中添加数据.

[self.searchDisplayController.searchResultsTableView reloadData];
于 2013-08-07T05:59:05.610 回答