如何通过UINavigationController传递segue的值?

时间:2016-10-14 10:08:44

标签: ios swift segue swift3

我有下一个结构:

enter image description here

那么,你怎么看,我将左上角控制器中的segue应用到GalleryViewController并希望通过segue传递一些值,为此我做了:

if segue.identifier == "goToGalleryVCFromRestaurant" {
   let galleryViewController = segue.destination as! GalleryViewController
   galleryViewController.photos = self.photos
}

但由于我的GalleryViewController嵌入在UINavController中,因此永远不会执行此部分let galleryViewController = segue.destination as! GalleryViewController。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

试试这个

if let destinationNavigationController = segue.destinationViewController as? UINavigationController {

  if  let galleryViewController = destinationNavigationController.topViewController as? GalleryViewController {

    galleryViewController.photos = self.photos
   }
}

答案 1 :(得分:0)

如果您在完成后需要后退按钮,那么您的结构就错了。您需要将先前的视图控制器放在导航控制器中,然后只需将segue设为push segue。问题解决没有大惊小怪。

Navigation Controller
       |
       |
       V

first view controller
       |
  (push segue)
       |
       V

second view controller

如果您这样做,那么将直接转到第二个视图控制器,并且您将有一个后退按钮,可以将您带回第一个视图控制器。