2016-01-08 63 views
0

我正在使用搜索欄和搜索顯示控制器,它利用NSPrediate來搜索從核心數據創建的tableview。以下代碼適用於我的大多數VC。但是,對於使用自定義單元格的情況,只要搜索,我就會得到零結果。ios/objective-c:結合自定義單元格的搜索顯示控制器

這裏是的cellForRowAtIndexPath,調整數據源的搜索代碼:

Items *item; 
    if (tableView == self.searchDisplayController.searchResultsTableView) { 
     item = [searchResults objectAtIndex:indexPath.row]; 
    } else { 
     item 
     = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    } 

由於這是在VC採用了自定義單元格,我不知道是否這就是爲什麼沒有返回結果的唯一情況。

這行告訴cellforrowatindexpath使用自定義單元格:

customCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"Cell"]; 
cell.item = item; 

最後,這是怎樣在細胞中的值設置:

-(void) setItem:(Items *)item{ //open 1 
    _item = item; 
    self.nameLabel.text = item.name; 
} 

能自定單元負責沒有項目出現在搜索中,或者我應該在別處尋找錯誤?

注意:搜索時返回的項目總數爲零。

回答

0
(IBAction)onbtnSearchTapped:(id)sender { 
@try{ 
    self.strSearchName = self.txtSearchName.text; 


    if ([self.strSearchName isEqualToString:@""] && 
     [self.strSearchVehicleType isEqualToString:@""]) { 
     self.isSearch = NO; 
    } 
    else { 
     self.isSearch = YES; 
     NSString* filter = @"%K CONTAINS[cd] %@ || %K CONTAINS[cd] %@"; 

     NSMutableArray *args=[[NSMutableArray alloc]initWithObjects:@"sFirstName",self.strSearchName,nil]; 

     NSArray *arrSearch=[NSArray arrayWithArray:args]; 
     self.arySearchList =[NSMutableArray arrayWithArray:[aryList filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:filter argumentArray:arrSearch]]]; 

     DLog(@"%@",self.arySearchList); 
     self.strSearchName = @""; 

    } 
    [self.tableView reloadData]; 
} @catch (NSException *exception) { 
    NSLog(@"Exception At: %s %d %s %s %@", __FILE__, __LINE__, __PRETTY_FUNCTION__, __FUNCTION__,exception); 
} 
@finally { 
}} 

,並在部分行的數量把

(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ 
if (self.isSearch == YES) { 
    return [self.arySearchClientList count];   
} else { 
    return [aryClientList count];   
}} 
相關問題