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