我在我的iOS應用程序中有一個mapView
和一個UISearchBar
來搜索位置並在其上居中。我的搜索結果通過自動完成完成,並顯示在tableView
中。tableView.hidden打破其他元素
我遇到了麻煩,當我點擊取消時,它顯示我所有的數據在tableView
。
所以我實現了這個功能:
func searchBarCancelButtonClicked(searchBar: UISearchBar) {
searchTableView.hidden = true
}
但是,這個功能的呈現,使這樣的:
我不知道(不知道如何看)如果我的mapView
仍然在黑屏下。
順便說一句,如果我刪除了取消按鈕的功能,和搜索的東西,如果我點擊Cancel
會顯示這樣的事情:
掩飾我tableView
再次,我要再進行一次搜索,然後用小十字按鈕刪除它,然後取消。
我的代碼,自動完成搜索,就是這樣:
func initTableView() {
searchTableView.delegate = self
searchTableView.dataSource = self
searchTableView.scrollEnabled = true
searchTableView.hidden = true
}
func searchBarSearchButtonClicked() {
searchTableView.hidden = false
searchBar.resignFirstResponder()
dismissViewControllerAnimated(true, completion: nil)
searchBar(searchBar, textDidChange: searchBar.text!)
}
func searchBar(_searchBar: UISearchBar, textDidChange searchText: String) {
searchTableView.reloadData()
searchAutocompleteEntriesWithSubstring(searchText)
}
func searchAutocompleteEntriesWithSubstring(substring: String) {
searchBar.filtredDatas.removeAll(keepCapacity: false)
for curString in searchBar.datas {
let myString:NSString! = curString.title! as NSString
let substringRange :NSRange! = myString.rangeOfString(substring)
if (substringRange.location == 0) {
searchBar.filtredDatas.append(curString)
}
}
}
這是從我的ViewController.swift
文件。 我的searchBar
變量是一個自定義類,它包含NSArray
數據和另一個fileterDatas
。
@IBOutlet weak var mapView: UGOMapController!
@IBOutlet var searchTableView: UITableView!
@IBOutlet weak var searchBar: UGOSearchBar!
感謝您的幫助。 如果您需要更多我的代碼,我可以編輯這篇文章。
編輯:
這裏是我的UITableView功能,用於searchTableView
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return searchBar.filtredDatas.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let autoCompleteRowIdentifier = "AutoComplete"
var cell = tableView.dequeueReusableCellWithIdentifier(autoCompleteRowIdentifier) as UITableViewCell!
if cell != nil {
let index = indexPath.row as Int
if (searchBar.filtredDatas.count > 0) {
cell!.textLabel!.text = searchBar.filtredDatas[index].title
}
}
else {
cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: autoCompleteRowIdentifier)
}
return cell!
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let selectedCell : UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
searchBar.text = selectedCell.textLabel!.text
}
而我的等級制度:
而且我的viewController檢查:
您可以檢查在Xcode的看法層次:https://developer.apple.com/library/ios/documentation/ToolsLanguages/Conceptual/Xcode_Overview/ExaminingtheViewHierarchy.html 我也建議檢查是否' searchTableView'設置正確。 – fiks
我剛剛檢查了視圖層次結構(感謝提示^^),但沒有,在那一點上一切正確...另一方面,我有我的numberOfRowInSection/cellForRowAtIndex ...函數。我對它們進行了定製,所以它是可能的,但是我很快就發現了它的真相。我應該把它放在帖子裏嗎? –
是的,請。瞭解視圖層次結構以及如何設置插座可能會有所幫助 – fiks