2012-06-22 16 views
1

我有一個viewController,它包含一個tableView;我在表頭中有一個UIView,並將一個searchDisplayController拖動到視圖中,同時還有一個分段控件。 (因爲某些原因,我不想使用範圍,因爲你想知道)。現在我的問題是,這個檢查 if(tableView == self.searchDisplayController.searchResultsTableView) in cellForRow失敗,即使用戶正在輸入searchBar。我不知道爲什麼??!!據我所知,當你將控制器拖入視圖時,所有代表等都會自動掛鉤。一旦用戶按下鍵盤上的搜索按鈕然後再滾動一下桌子,這個檢查就是真實的,我知道這不是它應該如何工作的!if(tableView == self.searchDisplayController.searchResultsTableView)失敗

任何人都可以對這裏可能發生的事情有所瞭解嗎?這讓我瘋狂!

非常感謝

+0

代表通常不會自動掛鉤。你必須自己做。 – trumpetlicks

+0

您很可能還必須編寫自己的委託方法! – trumpetlicks

+0

我已經實現了委託方法,並得到了回調。這就是我知道它不能正常工作的原因,因爲如上所述,標題中的if語句行爲很奇怪。 – Jules

回答

1

我不能想出解決辦法,所以我做到了另一種方式。使用BOOL isSearchTable並將其設置在willShowSearchResultsTableView和willHideSearchResultsTableView中。

+0

你應該使用'searchDisplayController'中的'active'屬性來代替引入一個新的屬性並且不必擔心它的狀態管理。 – Zorayr

9

您也可以使用self.searchDisplayController.active,例如:

if (self.searchDisplayController.active) { 
    return [searchResultArray count]; 
} else { 
    return [regularDataArray count]; 
} 

希望這有助於!儘管如果你試圖以正確的方式做到這一點,你應該有一個單獨的數據源,一個用於搜索,一個用於默認版本。