回答

2

我實際上找到了最簡單的方法。

我所要做的就是更改默認的cellForRowAtIndexPath第二行代碼並添加「self」。到tableView到出列單元格標識符 - 這樣,故事板中的單元格樣式總是從列表中取出,而不是從searchResultsController.tableView中刪除(不存在)的單元格樣式。另外還實現了heightForRowAtIndexPath,它將返回相同的高度,而不會返回任何支票(searchresults表或self.table - 我們想要相同的高度)

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return 62.0f; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"PhraseCell"; 
    UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    //      ^^^^ NEW 

    //... 
+0

它看起來很光滑,但它只是錯誤的。僅僅不支持從表A的重用堆中爲表B繪製單元格。除此之外,你正在顛覆表B的重用堆 - *其中的任何單元現在都被重用了。因此,具有1000行的表視圖現在需要1000個單元,而不是通常重複使用的8或10個最大值。 – matt 2013-05-10 16:31:27

+0

@matt我完全同意你的看法,我也這麼認爲,但是我看了一下Apple的源代碼[這裏](https://developer.apple.com/library/IOs/samplecode/TableSearch/Introduction/) Intro.html)。您是否介意評論蘋果是否管理重複使用樁以便共享?我知道蘋果公司並不總是提供100%正確的源代碼,但如果我看到所有關於這個問題的答案,他們都會說使用'self.tableView' ...你覺得怎麼樣? – HAS 2013-09-10 15:11:19

+0

@HAS我明白了它爲什麼有效。它們並不是完全共享的,但重要的是,如果搜索結果表中有1000行,則沒有災難,因爲單元格在它們不在視線內時仍會被釋放。因此,一次只存在9或10個細胞,這就是重中之重。我收回我的批評!謝謝你讓我再看一遍。 – matt 2013-09-10 18:11:09

相關問題