使用uisearchcontroller

时间:2016-08-29 03:08:32

标签: ios swift uitableview uisearchcontroller

我有一个应用程序,当用户点击一个单元格时,它会打开另一个viewController,我只是在我的tableview上添加uisearchcontroller

当我在tableview上搜索结果是正确的, 但是当我在过滤后点击单元格时,它会打开错误的页面。

我的问题是,当indexpath处于活动状态时,我现在不知道如何识别uiviewcontroller以使结果打开正确的页面

   func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

        IndexPathRow = indexPath.row


        performSegueWithIdentifier("toView2", sender: self)
}

修改

我通过在integer类型的结构中添加新变量来解决我的问题,然后将didSelectRowAtIndexPath函数修改为

   func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

if resultSearchController.active && resultSearchController.searchBar.text != ""{

      IndexPathRow = filteredData[indexPath.row].i
    }

    else {
        IndexPathRow = indexPath.row

    }

    performSegueWithIdentifier("toView2", sender: self)

    }

2 个答案:

答案 0 :(得分:0)

获取所选项目的更好方法是在segue委托内部调用indexPathForSelectedRow()方法

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    performSegueWithIdentifier("toView2", sender: self)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "toView2" {
        let indexPath = self.tableView.indexPathForSelectedRow() {
            print("IndexPathRow =  \(indexPath.row)")
            //destination controller code goes here ...
        }
    }
}

答案 1 :(得分:0)

您正在使用主阵列获取数据,尝试使用搜索到的数组获取数据,然后只检查其正确,检查与主阵列相关的所有方法的searchController.isActive(),基本上检查你的prepareForSegue