我正在學習實現帶有搜索欄和數據過濾的TableView。所以,我在我的storyboard
如下:試圖加載視圖控制器的視圖,而它正在釋放
我UITableViewController
連接到以下SearchTableViewController.swift
類是這樣的:
import UIKit
class SearchTableViewController: UITableViewController, UISearchResultsUpdating {
// table view controller properties
let appleProducts = ["Mac", "iPhone", "Apple Watch", "iMac", "iPad"]
var filteredAppleProducts = [String]()
var resultSearchController = UISearchController()
override func viewDidLoad() {
super.viewDidLoad()
// Configure result search controller
self.resultSearchController = UISearchController(searchResultsController: nil)
self.resultSearchController.searchResultsUpdater = self
self.resultSearchController.dimsBackgroundDuringPresentation = false
self.resultSearchController.searchBar.sizeToFit()
self.resultSearchController.searchBar.placeholder = "Search Products"
self.tableView.tableHeaderView = self.resultSearchController.searchBar
self.tableView.reloadData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if (self.resultSearchController.active) {
return self.filteredAppleProducts.count
} else {
return self.appleProducts.count
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
if (self.resultSearchController.active) {
cell.textLabel?.text = self.filteredAppleProducts[indexPath.row]
} else {
cell.textLabel?.text = self.appleProducts[indexPath.row]
}
return cell
}
func updateSearchResultsForSearchController(searchController: UISearchController) {
self.filteredAppleProducts.removeAll(keepCapacity: false)
let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!)
let resultArray = (self.appleProducts as NSArray).filteredArrayUsingPredicate(searchPredicate)
self.filteredAppleProducts = resultArray as! [String]
self.tableView.reloadData()
}
}
這運行正常和過濾按預期工作:
然而,w應用程序被在模擬器運行母雞,我得到在調試窗口以下警告:
2015年9月7日00:02:46.116 TableViewSearch [2415:68217]試圖加載 一個視圖的視圖控制器,而它正在釋放是不允許的 並可能導致未定義的行爲()
任何想法如何解決這個問題?
究竟是什麼'TableViewSearch'? –
@ILikeTau它是XCode中項目/應用程序的名稱。 – Latheesan
你提出了一個新的控制器?我的猜測是它試圖再次展示這個控制器或類似的東西......你能添加更多的代碼嗎? –