Re: [問題] UISearchDisplayDelegate
※ 引述《NelsonT (新竹好無聊)》之銘言:
: : =============
: : 自問自答 again:
: : 後來發現到問題了 原本
: : self.searchDisplayController.searchResultsTableView.delegate =
: : searchDelegate;
: : self.searchDisplayController.searchResultsTableView.dataSource =
: : searchDelegate;
: : 這兩行 要改成
: : self.searchDisplayController.searchResultsDelegate = self.searchDelegate;
: : self.searchDisplayController.searchResultsDataSource = self.searchDelegate;
: : 原因是取消了searchBar的搜尋之後,下一次再進來searchBar時
: : searchResultsTableView已經不是同一個tableView了 (雖然之前的tableView也還存在)
: : 所以第二次進行search時 searchResultsTableView的delegate/dataSource已經換了
: 這樣聽起來還是不太對,
: 你這是在 viewDidLoad 時設定的,但每次 searchResultsTableView 都不同,
: 而 viewDidLoad 只被呼叫一次,這樣怎麼會有效呢?
: 要不要試試看寫在這個方法裡
: searchDisplayController:didLoadSearchResultsTableView
: 我沒試過,不確定是否有效。
我的方法是有效的
UISearchDisplayController的searchResultsDataSource和searchResultsDelegate
會在每次searchResultsTableView實體化在 幫忙設定DataSource和Delegate
所以不要直接對searchResultsTableView設定DataSource和Delegate
因為searchResultsTableView實體物件可以會被變更...
我沒有實際去print 前後兩個searchResultsTableView的實體位址是否是同一個
也有可能是前後的searchResultsTableView都是一樣
而在searchResultsTableView 的-ViewWillAppear時
重新assign一次searchDisplayController的DataSource和Delegate
給searchResultsTableView
Anyway,就是不要assign searchResultsTableView的DataSource和Delegate
而是 searchDisplayController的searchResultsDataSource和searchResultsDelegate
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.198.45.233
※ 編輯: leondemon 來自: 60.198.45.233 (09/14 00:51)
討論串 (同標題文章)