[問題] SearchBar在UIView裏顯示result table

看板MacDev作者 (加油!!變強)時間9年前 (2015/05/04 22:20), 編輯推噓2(2026)
留言28則, 3人參與, 最新討論串1/1
語法是Swift 目的是:在一個地圖MapView (UIViewController) 上放一個有search(display)controller處理的searchbar iOS8新的機制UISearchController下 我在mapview的controller可以宣告一個新UISearchController 指定他的searchResultsController與searchResultsDelegate 為一個我另外寫的UITableViewController Class 在那裡面處理search result的事件跟資料 藉由SearchController本身的searchBar變數就可把搜尋框加到MapView (也就是UIViewController) 開始在上面打字 畫面就會有切換到table view的動畫 原本的uivew會被這個tableview蓋掉 一切都很完美 code重點如下 (在主UIViewController中) let src = AutoCompleteController() //AutoCompleteController是 //TableViewController ...... searcher = UISearchController(searchResultsController: src) searcher.searchResultsUpdater = src searcher.searchBar.delegate = self searchBarView.addSubview(searcher.searchBar) searcher.searchBar.sizeToFit() //searchBar的delegate是在UIViewController上 //ResultsUpdater跟ResultsController都是另外拉的AutoCompleteController //並且相關的tableview處理動作也寫好在AutoComplet.... 然後小弟想要做IOS7的backward compatibility 所以回頭研究如何用UISearchDisplayController去實作一樣的功能 (我是SWIFT新手IOS8才開始學的XD) 但是感覺沒那麼簡單 先參考http://www.raywenderlich.com/76519/add-table-view-search-swift 的範例 然後在UIViewController也是一樣宣告一個跟範例一樣的TableViewController Class 在這裡叫src2 但是是實作UISearchDisplayController功能的 main UIViewController裡換成這樣 let searchBar = UISearchBar() searchBar.delegate = self let searcher2 = UISearchDisplayController(searchBar: searchBar, contentsController: src2) searcher2.searchResultsDataSource = src2 searcher2.searchResultsDelegate = src2 searchBarView.addSubview(searcher2.searchBar) searcher2.searchBar.sizeToFit() searchDisplayController應該設的DataSource跟Delegate都有給src2 但是在這個searchBar上打字 動畫跟tableview都沒有出來過 沒有動靜 不知道是不是我使用SearchDisplayController的觀念有問題 因為網路上教學的範例幾乎都是searchBar在TableViewController裏的 並沒有searchBar在普通的UIView裏 然後開始輸入就會出現tableview蓋掉畫面的 我覺得ios8 SearchController只是被我剛好瞎矇試成功的 架構兩者好像不太一樣 我相信是做得到的 因為ios版的google map 跟很多app都有看到這種效果 (searchBar放在非tableview的uiview中 點了才有搜尋結果tableview動畫) 希望有前輩們可以指點 感恩感恩 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.208.119 ※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1430749250.A.97A.html

05/05 13:35, , 1F
code請放git 這樣看超辛苦...
05/05 13:35, 1F

05/05 14:49, , 2F
我用swift寫了一個demo放在github 應該是你想要的效果
05/05 14:49, 2F

05/05 14:50, , 3F
有什麼問題在發問
05/05 14:50, 3F

05/05 14:51, , 4F

05/06 12:04, , 5F
t大抱歉 searchDisplayController失敗的沒放
05/06 12:04, 5F

05/06 12:05, , 7F
這是ios8 SearchController的demo也分享給大家
05/06 12:05, 7F

05/06 12:05, , 8F
有包括google place api的auto complete效果
05/06 12:05, 8F

05/06 12:06, , 9F
p大感激啊 我再試試 很可能只是stc.delegate沒加而已
05/06 12:06, 9F

05/06 12:08, , 10F
sbdc 更正
05/06 12:08, 10F

05/06 12:43, , 11F
to p大 我將searchBar放在另個有constraint的uiview
05/06 12:43, 11F

05/06 12:44, , 12F
uiview小區域再為main view的subview
05/06 12:44, 12F

05/06 12:45, , 13F
依照您的方式加了以後 搜尋點了後indexPath.row有印
05/06 12:45, 13F

05/06 12:45, , 14F
但是畫面沒有彈出tableview
05/06 12:45, 14F

05/06 12:46, , 15F
截圖 tinyurl.com/mujkbtb
05/06 12:46, 15F

05/06 12:49, , 16F
ios8新版search controller我也是這樣加 效果就有
05/06 12:49, 16F

05/06 12:49, , 17F
code: tinyurl.com/na2n7xd
05/06 12:49, 17F

05/06 12:51, , 18F
stortyboard樹狀:tinyurl.com/n98h53d
05/06 12:51, 18F

05/06 12:53, , 19F
跟google map的GMSMapView放在一起
05/06 12:53, 19F

05/06 12:55, , 20F
這是iOS8 SearchController的效果 tinyurl.com/oh7auqs
05/06 12:55, 20F

05/06 12:56, , 21F
感覺是有constraint的searchBarView對舊版sdc有影響?
05/06 12:56, 21F

05/06 13:43, , 22F
我剛剛試了一下 searchBar加入有Navigation Controller
05/06 13:43, 22F

05/06 13:43, , 23F
的View, 預設加入會被navigation bar擋住
05/06 13:43, 23F

05/06 13:44, , 24F
於是設origin.y=self.topLayoutGuide.length就出現了
05/06 13:44, 24F

05/06 13:45, , 25F
但是edit以後 彈出的tableview就又把searchbar蓋掉了
05/06 13:45, 25F

05/06 13:45, , 26F
我將您的demo改了一下放在我的github
05/06 13:45, 26F

05/06 13:46, , 27F

05/06 14:22, , 28F
好像找到解了 navigationBar.translucent = NO;
05/06 14:22, 28F
文章代碼(AID): #1LHu12bw (MacDev)