作者leondemon (狗狗)
看板MacDev
标题Re: [问题] UISearchDisplayDelegate
时间Fri Sep 14 00:47:18 2012
※ 引述《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)