两个视图控制器不是segue相同的视图控制器一个工作另一个是不工作swift 3

时间:2017-03-29 14:47:55

标签: ios swift swift3

我有两个视图控制器都是相同的类型,都有一些详细的视图页面视图。并且两者都有不同的segue名称,但是一个进入详细页面而另一个不会抛出一些错误。 有人可以帮我解决这个问题吗?

没有工作的猜测

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "showQueueDetails"){

        let indexPath = self.tableView.indexPathForSelectedRow!

        // sending data from tableviews to DetailTableView
        let passingData = segue.destination as! QueueDetailViewController
        // Getting the complete CoreData Object and passing it to the detail view
        passingData.data = coreDataArray[indexPath.row]

        self.tableView.deselectRow(at: indexPath, animated: true)
    }
}

正在运作的segue

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "showDetails"){

        // var upcoming: NewViewController = segue.destination as! NewViewController
        let indexPath = self.tableView.indexPathForSelectedRow!
        //let titleString = self.objects.objects(at: sender.row) as? String

        // sending data from tableviews to DetailTableView
        let passingData = segue.destination as! RecentScansDetailViewController
        // Getting the complete CoreData Object and passing it to the detail view
        passingData.data = coreDataArray[indexPath.row]

        // upcoming.titleString = titleString
        self.tableView.deselectRow(at: indexPath, animated: true)
    }
}

error which i am getting

storyboard

我希望有相同的控制器转到另一个视图控制器 但回来时它应该自动知道它应该返回哪个视图控制器

1 个答案:

答案 0 :(得分:1)

你的输出表明你的seque有标识符" showQueueDetails"有一个类型为" RecentScansDetailViewController"的targetViewController; (与sequ​​e相同,#34; showDetails"。

确保使用标识符" showQueueDetails"真的指向#34; QueueDetailViewController"类型的targetViewController;因为你也把它投射到你的代码中。

返回故事板并查看

  1. seque本身
  2. targetViewController的seque类,带有标识符" showQueueDetails" - 也许你复制了你的" RecentScansDetailViewController" -ViewController并且没有更新它的类。