[問題] UISearchDisplayDelegate

看板MacDev作者 (狗狗)時間11年前 (2012/09/12 21:37), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/4 (看更多)
遇到一個關於UISearchDisplayController的問題 一直解不掉 所以想問問看板上有沒有人有經驗 :( 說明: 有一個tableView/tableViewController 上面有一個searchBar/searchDisplyController 不過由於searchBar所要找的資料 是跟原先tableView所呈現的資料是不一樣的 因此我把searchBar/searchDisplyController 相關的delegation交給另外一個物件處理 // 在tableViewController.m 下 - (void) viewDidLoad{ id searchDelegate = [SearchDelegate new]; self.searchDisplayController.delegate = searchDelegate; self.searchDisplayController.searchBar.delegate = searchDelegate; self.searchDisplayController.searchResultsTableView.delegate = searchDelegate; self.searchDisplayController.searchResultsTableView.dataSource = searchDelegate; self.searchDelegate = searchDelegate; // hold this object. } 因此searchBar所有活動 都交由searchDelegate處理 SearchDelegate實作所有protocol: <UISearchBarDelegate, UISearchDisplayDelegate, UITableViewDataSource, UITableViewDelegate> 遭遇的問題: 第一次開啟searchBar搜尋的時候 顯示都很正常 但是如果我按下searchBar的cancel鍵 回到原本的tableView 然後再按一次searchBar回來時 dataSource的method完全都沒有被invoked!! 我有嘗試呼叫[searchDisplayController.searchResultsTableView reloadData] 但是data source methods 一樣都沒有被呼叫。 而且[searchDisplayController.searchResultsTableView numberOfSections]一直是0 (我data source的-numberOfSectionsInTableView: 都是回一個固定值) 我實在想不透為什麼會這樣 =.= 基本上 我的data都沒有變動 search時利用 -scrollToRowAtIndexPath: 跳到該項結果 可是一旦我離開一次searchBar後 再次回來 tableView就是不會去call data source... 不知道有沒有人曾愈過這樣的情形? ============= 自問自答 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已經換了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.80.235.156 ※ 編輯: leondemon 來自: 60.198.45.233 (09/13 00:25)
文章代碼(AID): #1GK90Erg (MacDev)
文章代碼(AID): #1GK90Erg (MacDev)