2012-12-21 66 views
2

我有Plist这是已经填充tableview与扩大章节..现在我想搜索table..below图像,你可以看到什么是当我搜索任何东西正在发生。 。 只是因为我正在寻找,但需要在对的cellForRowAtIndexPath搜索结果中的一些变化....Plist Tableview的搜索

请检查代码,让我知道该怎么搜索的plist做.. 为cellforrowatindexpath应该是什么样的变化和noofrowsinsection从plist搜索

first sec

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 


return [self.mySections count]; 

} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
NSInteger rows = 0; 


if ([self tableView:tableView canCollapseSection:section] || !(tableView == self.searchDisplayController.searchResultsTableView)) 
{ 
    if ([expandedSections containsIndex:section]) 
    { 

     NSString *key = [self.mySections objectAtIndex:section]; 
     NSArray *dataInSection = [[self.myData objectForKey:key] objectAtIndex:0]; 

     return [dataInSection count]; 


    } 
    return 1; 
} else if(tableView == self.searchDisplayController.searchResultsTableView) { 

    rows = [self.searchResults count]; 
    return rows; 
} 

    return 1; 


} 

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection: (NSInteger)section { 
NSString *key = [self.mySections objectAtIndex:section]; 
return [NSString stringWithFormat:@"%@", key]; 
} 



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

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 

    //some changes required to display plst 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] ; 
} 

// Configure the cell... 



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

NSUInteger section = [indexPath section]; 
NSUInteger row = [indexPath row]; 



NSString *key = [self.mySections objectAtIndex:section]; 

NSDictionary *dataForSection = [[self.myData objectForKey:key] objectAtIndex:0]; 
NSArray *array=dataForSection.allKeys; 

cell.textLabel.text = [[dataForSection allKeys] objectAtIndex:row];  
cell.detailTextLabel.text=[dataForSection valueForKey:[array objectAtIndex:indexPath.row]]; 
} 

return cell; 
} 



- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if ([self tableView:tableView canCollapseSection:indexPath.section]) 
{ 
    if (!indexPath.row) 
    { 
     // only first row toggles exapand/collapse 
     [tableView deselectRowAtIndexPath:indexPath animated:YES]; 

     NSInteger section = indexPath.section; 
     BOOL currentlyExpanded = [expandedSections containsIndex:section]; 
     NSInteger rows; 


     NSMutableArray *tmpArray = [NSMutableArray array]; 

     if (currentlyExpanded) 
     { 
      rows = [self tableView:tableView numberOfRowsInSection:section]; 
      [expandedSections removeIndex:section]; 

     } 
     else 
     { 
      [expandedSections addIndex:section]; 
      rows = [self tableView:tableView numberOfRowsInSection:section]; 
     } 


     for (int i=1; i<rows; i++) 
     { 
      NSIndexPath *tmpIndexPath = [NSIndexPath indexPathForRow:i 
                  inSection:section]; 
      [tmpArray addObject:tmpIndexPath]; 
     } 

     UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

     if (currentlyExpanded) 
     { 
      [tableView deleteRowsAtIndexPaths:tmpArray 
          withRowAnimation:UITableViewRowAnimationTop]; 

      cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeDown]; 

     } 
     else 
     { 
      [tableView insertRowsAtIndexPaths:tmpArray 
          withRowAnimation:UITableViewRowAnimationTop]; 
      cell.accessoryView = [DTCustomColoredAccessory accessoryWithColor:[UIColor grayColor] type:DTCustomColoredAccessoryTypeUp]; 

     } 
    } 
} 
} 

- (void)filterContentForSearchText:(NSString*)searchText 
         scope:(NSString*)scope 
{ 
NSPredicate *resultPredicate = [NSPredicate 
           predicateWithFormat:@"SELF contains[cd] %@", 
           searchText]; 

self.searchResults = [self.mySections filteredArrayUsingPredicate:resultPredicate]; 

} 

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString 
{ 
UISearchBar * searchBar = [controller searchBar]; 
[self filterContentForSearchText:searchString scope:[[searchBar scopeButtonTitles] objectAtIndex:[searchBar selectedScopeButtonIndex]]]; 
return YES; 
} 

-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption 
{ 
UISearchBar * searchBar = [controller searchBar]; 
[self filterContentForSearchText:[searchBar text] scope:[[searchBar scopeButtonTitles] objectAtIndex:searchOption]]; 
return YES; 
} 

回答

1

搜索结果您使用的是numberOfRows既然你过滤了部分的标题,而不是行应该用于numberOfSections 。