我有2个数组。一种用于所有车辆,另一种用于过滤车辆。通过搜索栏动态生成的filterdVehicles效果很好。但是我不能为下一场景动态选择。
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.performSegueWithIdentifier("DisplayViewSegue", sender: tableView)
}
和
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "DisplayViewSegue" {
let nextScene = segue.destinationViewController as! DisplayViewController
if sender as! UITableView == self.searchDisplayController!.searchResultsTableView {
let indexPath = self.searchDisplayController!.searchResultsTableView.indexPathForSelectedRow()!
let selectedVehicle = self.filteredVehicles[indexPath.row]
nextScene.currentVehicle = selectedVehicle
} else {
let indexPath = self.tableView.indexPathForSelectedRow()!
let selectedVehicle = self.vehicles[indexPath.row]
nextScene.currentVehicle = selectedVehicle
}
}
}
这些是与我联系的方法。当我单击任何表列表对象时,App出现异常,并出现此类错误:
无法将类型'UITableViewCell'(0x10757f9f0)的值强制转换为
'UITableView'(0x10757a810)。 (lldb)
最佳答案
我相信您已经在故事板上从表格视图单元到下一个场景设置了序列。这样,您的segue会自动执行,您不必调用self.performSegueWithIdentifier("DisplayViewSegue", sender: tableView)
当然,问题在于发送者是表视图单元,而不是您希望的表视图。您有两种选择:
删除didSelectRowAtIndexPath
的内容,并在prepareForSegue
内以其他方式获取对表视图的引用。
通过更改segue来更新情节提要,使其源自视图控制器本身而不是表视图单元。这将使您能够在performSegueWithIdentifier
方法内调用didSelectRowAtIndexPath
。
关于ios - UITableView和带有Segue的搜索栏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31343717/