我有一个应用程序,当用户点击一个单元格时,它会打开另一个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)
}
答案 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