我使用JSON
从Firebase
解析一些信息。我在tableview
中实现了搜索控制器,它在搜索时返回正确的项目,但问题是点击(didSelectRowAtIndexPath
)它返回错误的信息。是什么导致这种情况,你能告诉我们吗?
这是我正在搜索的数组:
var brands = [String]()
这是过滤后的数组:
var filteredBrands = [String]()
这就是我在didSelectRowAtIndexPath
:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
selectedBrand = brands[indexPath.row]
performSegueWithIdentifier("toProducts", sender: self)
}
就像这样我传递了所选的值:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
if (segue.identifier == "toProducts") {
let snusProductsView = segue.destinationViewController as! SnusProductsTableViewController
snusProductsView.brandName = selectedBrand
print(self.selectedBrand)
}
}
但由于某种原因,它传递了错误的值。它传递tableView
答案 0 :(得分:1)
我一定是笨蛋......发帖后我发现了问题所在。如果resultSearchController
处于有效状态,我的override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
if (segue.identifier == "toProducts") {
let snusProductsView = segue.destinationViewController as! SnusProductsTableViewController
snusProductsView.brandName = selectedBrand
print(self.selectedBrand)
}
}
错误。所以我修理了这个:
Apps Script
答案 1 :(得分:1)
在didSelectRowAtIndexPath
内,您必须检查过滤版本是否已过滤,如果是,则需要使用filteredBrands
代替brands
。
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
if isSearching {
selectedBrand = filteredBrands[indexPath.row]
} else {
selectedBrand = brands[indexPath.row]
}