0

我有一个带有搜索显示控制器的表格视图。当我键入搜索时,日志显示搜索正在正常工作并且过滤正常,但屏幕仅显示“无结果”。如果这有所作为,我正在使用 Core Data。

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if (tableView == self.searchDisplayController.searchResultsTableView) {
    return [searchResults count];
}
else{
    return[[self.fetchedResultsController sections]count];
}
}



- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 {

id <NSFetchedResultsSectionInfo> secInfo = [[self.fetchedResultsController sections]objectAtIndex:section];\
return [secInfo numberOfObjects];

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell;
static NSString *CellIdentifier = @"Cell";

if (tableView != self.tableView) {
    NSLog(@"Found searchDisplayController");
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
} else {
    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    NSLog(@"Found regular table View");
}

    // Configure the cell...
    Instance *instance = [self.fetchedResultsController objectAtIndexPath:indexPath];


    if (tableView == self.searchDisplayController.searchResultsTableView) {
    cell.textLabel.text = [searchResults objectAtIndex:indexPath.row];
    } else {
    cell.textLabel.text = instance.name;
    }

这里是 NumberOfRowsInSection 和 Number:

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
 {
     if (tableView == self.searchDisplayController.searchResultsTableView) {
    return [searchResults count];
}
     else{
    return[[self.fetchedResultsController sections]count];
}
}
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 {
     id <NSFetchedResultsSectionInfo> secInfo = [[self.fetchedResultsController sections]objectAtIndex:section];\
     return [secInfo numberOfObjects];
 }
4

2 回答 2

0

你的实现不应该是这样的: -

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
 {
     if (tableView == self.searchDisplayController.searchResultsTableView) 
     {
       return 1;
     }
     else
     {
       return[[self.fetchedResultsController sections]count];
     }
}
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 {
    if(tableView == self.searchDisplayController.searchResultsTableView)
    {
      return [searchResults count];
    }
     id <NSFetchedResultsSectionInfo> secInfo = [[self.fetchedResultsController sections]objectAtIndex:section];\
     return [secInfo numberOfObjects];
 }

如果搜索结果的数量很多,那么我建议使用另一个 Fetched Results Controller 而不是数组。

于 2013-09-08T02:43:38.487 回答
0

检查您对numberOfSectionsInTableView和的实现numberOfRowsInSection
首先,如果是搜索表视图(1 部分),则应返回 1。
在中numberOfRowsInSection,您还应该像在中一样检查给定的 tableView 参数numberOfSectionsInTableView并返回[searchResults count]

于 2013-09-07T19:49:09.130 回答