搜索项目会在点击

时间:2016-08-21 20:48:13

标签: ios swift uitableview uisearchcontroller

我使用JSONFirebase解析一些信息。我在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

中的第一个项目

2 个答案:

答案 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]
    }