从UITableViewCell到DetailViewController的segue不起作用



我有这个问题,当在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的方式。

最新更新