作者goodwise (加油!!变强)
看板MacDev
标题[问题] SearchBar在UIView里显示result table
时间Mon May 4 22:20:46 2015
语法是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://webptt.com/cn.aspx?n=bbs/MacDev/M.1430749250.A.97A.html
1F:推 tentenlee: code请放git 这样看超辛苦... 05/05 13:35
2F:推 purmac: 我用swift写了一个demo放在github 应该是你想要的效果 05/05 14:49
3F:→ purmac: 有什麽问题在发问 05/05 14:50
5F:→ goodwise: t大抱歉 searchDisplayController失败的没放 05/06 12:04
7F:→ goodwise: 这是ios8 SearchController的demo也分享给大家 05/06 12:05
8F:→ goodwise: 有包括google place api的auto complete效果 05/06 12:05
9F:→ goodwise: p大感激啊 我再试试 很可能只是stc.delegate没加而已 05/06 12:06
10F:→ goodwise: sbdc 更正 05/06 12:08
11F:→ goodwise: to p大 我将searchBar放在另个有constraint的uiview 05/06 12:43
12F:→ goodwise: uiview小区域再为main view的subview 05/06 12:44
13F:→ goodwise: 依照您的方式加了以後 搜寻点了後indexPath.row有印 05/06 12:45
14F:→ goodwise: 但是画面没有弹出tableview 05/06 12:45
15F:→ goodwise: 截图 tinyurl.com/mujkbtb 05/06 12:46
16F:→ goodwise: ios8新版search controller我也是这样加 效果就有 05/06 12:49
17F:→ goodwise: code: tinyurl.com/na2n7xd 05/06 12:49
18F:→ goodwise: stortyboard树状:tinyurl.com/n98h53d 05/06 12:51
19F:→ goodwise: 跟google map的GMSMapView放在一起 05/06 12:53
20F:→ goodwise: 这是iOS8 SearchController的效果 tinyurl.com/oh7auqs 05/06 12:55
21F:→ goodwise: 感觉是有constraint的searchBarView对旧版sdc有影响? 05/06 12:56
22F:→ goodwise: 我刚刚试了一下 searchBar加入有Navigation Controller 05/06 13:43
23F:→ goodwise: 的View, 预设加入会被navigation bar挡住 05/06 13:43
24F:→ goodwise: 於是设origin.y=self.topLayoutGuide.length就出现了 05/06 13:44
25F:→ goodwise: 但是edit以後 弹出的tableview就又把searchbar盖掉了 05/06 13:45
26F:→ goodwise: 我将您的demo改了一下放在我的github 05/06 13:45
28F:→ goodwise: 好像找到解了 navigationBar.translucent = NO; 05/06 14:22