Ios 如何通过UINavigationController通过segue传递值?
我有下一个结构: 因此,您可以看到,我将segue从左上角控制器应用到GalleryViewController,并希望通过segue传递一些值,为此我做了:Ios 如何通过UINavigationController通过segue传递值?,ios,swift,segue,swift3,Ios,Swift,Segue,Swift3,我有下一个结构: 因此,您可以看到,我将segue从左上角控制器应用到GalleryViewController,并希望通过segue传递一些值,为此我做了: if segue.identifier == "goToGalleryVCFromRestaurant" { let galleryViewController = segue.destination as! GalleryViewController galleryViewController.photos = self.
if segue.identifier == "goToGalleryVCFromRestaurant" {
let galleryViewController = segue.destination as! GalleryViewController
galleryViewController.photos = self.photos
}
但由于我的GalleryViewController嵌入在UINavController中,因此永远不会执行此部分let GalleryViewController=segue.destination as!GalleryViewController
。我怎样才能解决这个问题?试试这个
if let destinationNavigationController = segue.destinationViewController as? UINavigationController {
if let galleryViewController = destinationNavigationController.topViewController as? GalleryViewController {
galleryViewController.photos = self.photos
}
}
如果你想要一个后退按钮,那么你的结构是错误的。您需要将上一个视图控制器放置在导航控制器中,然后将segue设置为推式segue。问题解决了,没有大惊小怪,没有混乱
Navigation Controller
|
|
V
first view controller
|
(push segue)
|
V
second view controller
如果您这样做,则将直接转到第二个视图控制器,您将有一个返回按钮,返回第一个视图控制器。最好的方法是将父视图控制器包含在导航控制器中。@Mr.Bista I,但是我没有在我的厨房里看到导航栏。这个问题已经被问过了,我在这里回答:但是我不能从那里返回=/没有“