2011-07-09 61 views
7

我有一個UITableViewController,其中我使用Interface Builder添加了一個UISearchBar作爲tableHeaderView。然後我在筆尖上添加了一個UISearchDisplayController,並設置了所有連接(delegate,searchResultsDelegate,searchContentsController,searchResultsDataSource,全部連接到UITableViewController)。 然後我在代碼中實現了所有委託和數據源方法。UISearchDisplayController與UITableViewController

它像一個魅力,除了一個奇怪的bug:有時搜索結果表視圖不會滾動,我可以看到它後面的主表視圖的閃光燈指標。我NSLog'd searchResultsTableView,顯然它是主要tableview的子視圖,我想這就是我之前描述的觸摸問題背後的原因。

我的錯誤是什麼?是否可以使用UITableViewControllerUISearchDisplayController?如果是這樣,我該如何設置它,以便結果表視圖不會被添加爲我的主表視圖的子視圖?

更新:我發現this sample它採用UISearchDisplayControllerUITableViewController,顯然檢索表視圖被添加到主表視圖中有作爲。所以現在我不認爲這是我的問題。

問題是,我無法找到我正在做的事和樣本正在做的事情之間的任何實質性區別。我只是在UITableViewController中添加一個UISearchBar作爲UITableView標題,並將它添加到UISearchDisplayController ...這就像我在嘗試滾動時在主表和搜索表之間混淆了一樣。你有什麼想法?

更新:增加了200代表賞金。 只有當你知道你在說什麼時,請回答。

+0

好像你在搜索功能中有一個錯誤,它會循環。 –

+0

@ user792677對不起,我不明白你的意見,你能解釋一下嗎? – pt2ph8

+0

您是單獨添加搜索欄和「UISearchDisplayController」,還是直接將「UISearchDisplayController」拖到表頭視圖,該表視圖創建所有必需的連接。我不知道它是否有所作爲,但我們永遠不知道。 – florian

回答

9

這是一個額外的self.tableView.scrollEnabled = YES,只要搜索數據請求完成,它就會被調用。希望它能幫助任何未來有同樣問題的人。

+1

給downvoter:請解釋一下?這是無稽之談。有人在這裏很樂意回答所有的答案。 – pt2ph8

+2

擰downvoters ......你採取主動,找到解決方案!太多的人只是放棄而不投入工作。 –

+1

沒有不規則的投票,也沒有垃圾標誌在這個答案。夥計們,回答你自己的問題沒有錯。 –

3

搜索顯示控制器管理搜索欄和表格視圖的顯示,其顯示搜索由另一個視圖控制器管理的數據的搜索結果。

這裏的searchDisplaycontroller結合了在tableview中顯示結果數據的搜索欄和tabelview,所以它不需要單獨的tableview。

當你使用UISerarchBar時,它需要至少有一個UITableView,它可以在視圖中顯示結果。在這裏你可以看到結果,甚至沒有添加SearchDisplayController來查看。

+0

爲什麼不呢?我鏈接的蘋果示例做到了,它工作。 – pt2ph8

+0

好的我現在可以編輯我的答案,因爲它可以完成。我被誤解了這一點。那麼,你在這裏想知道什麼? – AppAspect

+0

你讀過我的問題了嗎? – pt2ph8

0

搜索欄控制器使用自己的表格視圖添加在您自己的頂部。如果將UISearchDisplayController的委託和數據源設置爲您的UITableViewController,則表視圖控制器必須在其委託方法中區分兩個表視圖。如果你不這樣做,這可能會導致你的錯誤。

換句話說:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    if (tableView == self.tableView) { 
     return number of rows in data model; 
    } else { 
     perform the search query; 
     return number of rows in search query; 
    } 
} 

你做所有的代表和數據源的方法類似。

我不是100%確定這是什麼導致你的問題,但沒有看到更多的來源,這很難說。

+0

謝謝,但這不是我的問題。我已經在做這個區別了,但它是無關的。問題是,當我嘗試滾動搜索結果表時,有時它不會滾動,我可以看到主表的閃光指示器(這意味着主表視圖接收觸摸而不是搜索表)。另外,之前我還看到了一個新的小故障:我在主表頭中有一個視圖,有時當我滾動搜索表時,主表中的這個頁眉視圖奇蹟般地出現並且與搜索表重疊。奇怪的。 – pt2ph8

+1

修復此類錯誤的常用方法是構建一個最小應用程序並查看它是否重現了此行爲。這可能會導致您可以發送Apple的錯誤報告,或者(更可能)瞭解發生了什麼問題。 – Hollance

1

我想你可能想嘗試添加一個UISearchDisplayController IBOutlet到你的類,並將它連接到你的Nib文件中的SearchdDisplayController。我很有趣,你的筆尖中的searchdisplay控制器自動將它自己連接到檢查器中的默認serachdisaplaycontreoller插座。

相關問題