我有这个问题,当在iOS模拟器上运行我的应用程序时,我从自定义表视图单元格到细节视图控制器的segue不起作用。我可以点击单元格,但随后应用程序冻结,我不能再做任何事情,除非停止运行应用程序并重新启动它。我的应用中有几个地方有这样的segue,只有一个能正常工作,其他都不行。我确保了segue标识符没问题,但还是不行。你知道为什么会这样吗?
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetail" {
let cell = sender as! UITableViewCell
let indexPath = tableView.indexPathForCell(cell)
let detailViewController: DetailTableViewController = segue.destinationViewController as! DetailTableViewController
let objectAtIndex: Tasks = fetchedResultsController.objectAtIndexPath(indexPath!) as! Tasks
detailViewController.receivingObject = objectAtIndex
}
}
添加这个扩展到通过导航控制器,而segue
extension UIViewController{
var visibleVC: UIViewController {
if self is UINavigationController{
if let cvc = (self as! UINavigationController).visibleViewController { return cvc }
}
return self
}
}
并尝试这个preparesegue func
if segue.identifier == "showDetail" {
if let cell = sender as! UITableViewCell{
let indexPath = tableView.indexPathForCell(cell)
if let let detailViewController = segue.destinationViewController. visibleVC as! DetailTableViewController{
if let objectAtIndex = fetchedResultsController.objectAtIndexPath(indexPath!) as! Tasks{
detailViewController.receivingObject = objectAtIndex
} else { print("unlikely") }
} else { print("wiring problem in storyboard") }
} else { print("segue is not initiated from a cell") }
}
这将使列表更容易找出问题所在,但我认为这只是navvc的方式。