2016-10-14 2 views
-1

У меня есть следующая структура:Как передать значения через seigue через UINavigationController?

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. Как я могу это исправить?

+0

Лучшим способом было бы включить родительский контроллер просмотра внутри навигационного контроллера. –

+0

@ Mr.Bista Я уже, но я не вижу navbar внутри моей GalleryVC – Doe

+0

Этот вопрос уже задан и встречается здесь: http://stackoverflow.com/questions/26207846/pass-data-through-segue – Led

ответ

1

Попробуйте

if let destinationNavigationController = segue.destinationViewController as? UINavigationController { 

    if let galleryViewController = destinationNavigationController.topViewController as? GalleryViewController { 

    galleryViewController.photos = self.photos 
    } 
} 
+0

, но Я не могу вернуться оттуда =/Нет кнопки «<Назад» =/ – Doe

+0

да. вы не можете. вам нужно добавить элемент с левой кнопкой мыши с изображением <и добавить к нему действие, а при нажатии этой кнопки вывести из строя контроллер. – Sahil

+0

нет, это не то, что я хочу, тогда =/ – Doe

0

Если вы хотите кнопку назад, когда вы сделали, то ваша структура неправильно. Вы должны поместить предыдущий контроллер представления в контроллер навигации, а затем просто сделать segue нажатием клавиши. Проблема решена без суеты и без проблем.

Navigation Controller 
     | 
     | 
     V 

first view controller 
     | 
    (push segue) 
     | 
     V 

second view controller 

Если вы сделаете это, то будет непосредственно перейти непосредственно к второму контроллеру представления, и вы будете иметь кнопку назад, который доставит вас обратно в свой первый контроллер представления.

Смежные вопросы