从UITableViewCell到DetailViewController的segue无法正常工作

时间:2015-09-29 19:00:40

标签: ios swift uitableview

我遇到了这个问题,当在iOS模拟器上运行我的应用程序时,我从自定义表格视图单元格到详细视图控制器的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

    }

}

1 个答案:

答案 0 :(得分:1)

在segueing

时通过传感器控制器添加此扩展程序
extension UIViewController{
    var visibleVC: UIViewController {
        if self is UINavigationController{
            if let cvc = (self as! UINavigationController).visibleViewController { return cvc }
        }
        return self 
    }
}

并尝试准备segue 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") }
 }

这将在列表中更容易找出问题所在,但我认为只是导航vc阻碍了。