【发布时间】:2015-04-12 12:46:02
【问题描述】:
我正在尝试使用 TableView 设置 searchBar,以便我可以过滤表格视图,我正在尝试以编程方式完成所有操作。虽然我的代码不断发回错误:unexpectedly found nil while unwrapping an Optional value。错误在func numberOfRowsInSection 里面,我已经标记了。它与 SearchDisplayController 有关,我认为它是 nil 吗?代码:
struct UserMatches {
var finalMatchesName : String
var finalMatchesAge : Int
var finalMatchesLocation : PFGeoPoint
var finalMatchesImage : NSData
}
class Matches: UIViewController, UITableViewDataSource, UITableViewDelegate, UISearchBarDelegate, UISearchDisplayDelegate {
var tableView = UITableView()
var searchBar = UISearchBar()
var userMatches = [UserMatches]()
var filterUsers = [UserMatches]()
override func viewDidLoad() {
super.viewDidLoad()
createTableView()
}
func filterContentForSearchText(searchText: String) {
self.filterUsers = self.userMatches.filter({(user1: UserMatches) -> Bool in
let stringMatch = user1.finalMatchesName.rangeOfString(searchText)
return (stringMatch != nil)
})
}
func searchDisplayController(controller: UISearchDisplayController!, shouldReloadTableForSearchString searchString: String!) -> Bool {
self.filterContentForSearchText(searchString)
return true
}
func createTableView() {
tableView.sizeToFit()
tableView.dataSource = self
tableView.delegate = self
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
searchBar.sizeToFit()
searchBar.delegate = self
searchBar.showsScopeBar = true
searchBar.searchBarStyle = UISearchBarStyle.Minimal
searchBar.showsCancelButton = true
searchBar.returnKeyType = UIReturnKeyType.Search
tableView.tableHeaderView = searchBar
var searchDispCont = UISearchDisplayController(searchBar: searchBar, contentsController: nil)
searchDispCont.delegate = self;
searchDispCont.searchResultsDataSource = self;
searchDispCont.searchResultsDelegate = self;
self.view.addSubview(tableView)
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if tableView == self.searchDisplayController!.searchResultsTableView { //fatal error: unexpectedly found nil while unwrapping an Optional value
return self.filterUsers.count
} else {
return self.userMatches.count
}
}
}
【问题讨论】:
标签: uitableview swift uisearchbar uisearchdisplaycontroller