2014-01-20 29 views
1

我有一個由CoreData DB填充的iOS 7 UITableView;它工作得很好。我添加了一個UISearchDisplayController來搜索數據庫;除了搜索只顯示少量結果(少於屏幕上可以顯示的數字)的小型案例外,此功能運行良好。在那種情況下,我最終會看到額外的空白單元格,它們不會在我的結果下面滾動。這裏有一個例子:UISearchDisplayController的結果後可見額外的單元格

UISearch Weirdness

非滾動線之間的分隔符的寬度似乎是由「分隔符插圖」在我的表視圖storybord選項的定製寬度來控制,所以我知道這就是他們來自哪裏,我只是不知道如何阻止他們出現。在我的故事板中,表視圖的內容被設置爲'動態原型',只有1個原型單元格。我還將範圍搜索欄附加到故事板中的表格視圖中。

下面是我用來管理搜索交互的一些代碼。

#pragma mark - Search 
// This gets called when you start typing text into the search bar 
-(BOOL)searchDisplayController:(UISearchDisplayController *)_controller shouldReloadTableForSearchString:(NSString *)searchString { 
    self.searchString = searchString; 
    self.fetchedResultsController = nil; 

    [self setFetchedResultsControllerWithContext:self.managedObjectContext andPredicate:[self searchPredicateGenerator]]; 

    return YES; 
} 

// This gets called when you change the search bar scope 
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption { 
    self.searchBar.selectedScopeButtonIndex = searchOption; 
    self.fetchedResultsController = nil; 

    [self setSearchBarPlaceholdersForCase:searchOption]; 

    [self setFetchedResultsControllerWithContext:self.managedObjectContext andPredicate:[self searchPredicateGenerator]]; 

    return YES; 
} 

// To generate search predicates 
-(NSPredicate *)searchPredicateGenerator { 
    return [NSPredicate predicateWithFormat:[NSString stringWithFormat: @"%@ AND ((title CONTAINS[cd] \"%@\") OR (descriptionText CONTAINS[cd] \"%@\"))", 
              [self stringPredicateForCase:self.searchBar.selectedScopeButtonIndex], 
              self.searchString, 
              self.searchString ]]; 
} 

// This gets called when you cancel or close the search bar 
- (void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller{ 
    self.searchString = nil; 
    self.fetchedResultsController = nil; 

    [self setFetchedResultsControllerWithContext:self.managedObjectContext andPredicate:self.filterPredicate]; 
} 

// to tell the search controller which cells to use here 
- (void)searchDisplayController:(UISearchDisplayController *)controller didLoadSearchResultsTableView:(UITableView *)tableView { 
    [tableView registerClass:[TWLTableCell class] forCellReuseIdentifier:@"MarkIdentifier"]; 
    tableView.rowHeight = TWLTABLE_ROW_HEIGHT; // or some other height 
} 

我在這裏已經避免粘貼整個文件,以保持較短的問題,但如果你需要其他的代碼段(或任何其他信息),請讓我知道。謝謝。

+0

嗯,約2周後沒有任何反應。請讓我知道我是否可以提供更多信息等來幫助追蹤此問題。 – Nick

回答

1

試試這個,

故事板 - >表視圖 - >屬性檢查器 - >樣式 - >分組

+0

這可行,但我不明白爲什麼。它確實弄亂了我所有單元格的高度(使它們高一半),但我可以在前後分辨故事板文件並將適當的像素高度固定爲與之前相同。謝謝! – Nick

+0

這是iphone設置頁面中使用的標準方式。至少看起來不錯:) – Esqarrouth

相關問題