Ios prepareForSegue不使用导航控制器

Ios prepareForSegue不使用导航控制器,ios,swift,Ios,Swift,我有一个带有活动指示器的视图控制器,可以从数据库中获取数据。获取所有数据后,此视图将使用Identifier执行查询,并使用PrepareForsgue将数据传递给TableViewController。我遇到的问题是,如果我在获取数据的视图和获取数据的TableViewController之间添加导航控制器PrepareForsgue不起作用,我就看不到TableViewController上的数据。然而,如果我删除导航控制器,我得到的数据很好。下面是我的预考方法。我在那里嵌入了一个导航控制器

我有一个带有活动指示器的视图控制器,可以从数据库中获取数据。获取所有数据后,此视图将使用Identifier执行查询,并使用PrepareForsgue将数据传递给TableViewController。我遇到的问题是,如果我在获取数据的视图和获取数据的TableViewController之间添加导航控制器PrepareForsgue不起作用,我就看不到TableViewController上的数据。然而,如果我删除导航控制器,我得到的数据很好。下面是我的预考方法。我在那里嵌入了一个导航控制器,以获得我想要的这个序列的过渡效果,这个序列应该有一个推序列,让TableViewController从左侧滑入。谢谢

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "serviceView" {
        if let destination = segue.destinationViewController as? ServiceTableViewController {
            destination.firstName = self.firstName
            destination.lastName = self.lastName
            destination.email = self.email
            destination.streetAddress = self.streetAddress
            destination.aptOrSuite = self.aptOrSuite
            destination.state = self.state
            destination.city = self.city
            destination.zipcode = self.zipcode
            destination.phone = self.phone
        }
    }
}

嵌入在导航控制器而不是表视图控制器中获取数据的视图控制器,因此两个视图控制器都在导航控制器的视图控制器堆栈中

嵌入在导航控制器而不是表视图控制器中获取数据的视图控制器,因此,两个视图控制器都在导航控制器的视图控制器堆栈中

首先需要访问NavigationController,然后访问topViewController,将topViewController转换为目标NavigationController

let destinationNavigationController = segue.destination as! UINavigationController
let targetController = destinationNavigationController.topViewController as! serviceView 
targetController.firstName = self.firstName

首先需要访问NavigationController,然后访问topViewController,将topViewController转换为目标NavigationController

let destinationNavigationController = segue.destination as! UINavigationController
let targetController = destinationNavigationController.topViewController as! serviceView 
targetController.firstName = self.firstName

我原以为destinationViewController现在是一个UINavigationController而不是ServiceTableViewController,为什么不运行它并查看IDE中的segue.destinationViewController以了解它是什么。是的,谢谢,我在调试模式下验证了目标现在是UINavigationController。但是,现在我当然会得到错误“UINavigationController类型的值没有成员名”。现在我如何将数据从UINavigationController传递到TableViewController?现在是否需要UINAVIGATOCONTROLLER类?您可以将导航控制器的子级作为数组获取,让vcs=segue.destinationViewController.viewControllers。第一个子项应该是您的ServiceTabeViewController(最好以编程方式检查第一个子项实际上是ServiceTableViewController,如果不是,则断言。如果您更改情节提要但忘记更新prepareForSegue代码,这将捕获您在开发过程中遇到的任何问题)。是否有理由在这两者之间添加导航控制器,而不是在第一个视图控制器之前?例如,如果您不希望导航栏在第一个视图控制器中可见,那么即使它嵌入在导航控制器中,也很容易做到。谢谢,如果让destination=segue.destinationViewController as,我现在就可以这样工作了?UINavigationController{如果让targetController=destination.topViewController作为?ServiceTableViewController{targetController.firstName=self.firstName我本以为destinationViewController现在是UINavigationController而不是ServiceTableViewController,为什么不运行它并查看IDE中的segue.destinationViewController以了解它是什么。是的,谢谢,我在调试模式下验证了目标现在是UINavigation当然,现在我得到的错误是“UINavigationController类型的值没有成员名。”现在如何将数据从UINavigationController传递到TableViewController?现在是否需要UINavigationController类?您可以将导航控制器的子项作为数组获取,让vcs=segue.destinationViewController.ViewController。第一个子项应为您的ServiceTabeViewController(以编程方式检查第一个子级实际上是ServiceTableViewController是一个很好的做法,如果不是,则断言。如果更改情节提要但忘记更新prepareForSegue代码,这将捕获开发过程中遇到的任何问题)。在这两者之间添加导航控制器,而不是在第一个视图控制器之前添加导航控制器,这有什么原因吗?例如,如果您不希望导航栏在第一个视图控制器中可见,即使它嵌入到导航控制器中,也很容易做到。谢谢,如果让destination=segue.de,我现在就可以这样工作了SteniationViewController作为?UINavigationController{如果让targetController=destination.topViewController作为?ServiceTableViewController{targetController.firstName=self.firstName