В раскадровке iOS 5, как вы перемещаете новую сцену в оригинальный контроллер представления из Popover? - PullRequest
8 голосов
/ 16 октября 2011

Я создаю popoverSegue из нового контроллера представления и хочу поместить третий контроллер представления в исходный стек. Вот как я создаю приложение:

  1. Создать новый Single View Application
  2. Выбрать Use Storyboards
  3. Выберите файл MainStoryboard.storyboard.
  4. Выберите единственный View Controller, измените Title и Identifier на initialView, затем выберите Editor->Embed In->Navigation Controller
  5. Перетащите два новых View Controller объекта из библиотеки объектов на холст
  6. Измените Title и Identifier новых контроллеров представления на: popoverView и newView.
  7. Добавление объекта Round Rect Button из библиотеки объектов в initialView и popoverView.
  8. Добавить объект Label из библиотеки объектов в `newView.
  9. Control нажмите кнопку в initialView и перетащите на popoverView.
  10. Выберите параметр Popover в появившемся меню Storyboard Segues.
  11. Control нажмите кнопку в popoverView и перетащите на newView.
  12. Выберите параметр Push в меню Storyboard Segues.
  13. Build & Run.

Нажмите первую кнопку, и появится всплывающее окно, но когда вы нажимаете кнопку внутри всплывающего окна, ничего не происходит (должно появиться новое представление, но нет.)

То, что я хочу сделать, это поместить его в стек Navigation Controller, но я не уверен, как настроить раскадровку для этого.

Есть идеи?

Ответы [ 2 ]

6 голосов
/ 28 декабря 2011

Вы ожидаете, что иерархия UINavigationController превратится в представленный поповер.Не будетТо же самое касается представления модальных контроллеров представления.Если вы войдете в self.navigationController в popoverView, вы увидите, что это ноль.

Вставить popoverView в свой UINavigationController.Помните, что если вы переопределяете prepareForSegue:sender: и пытаетесь настроить всплывающее окно, вам нужно получить topViewController из destinationViewController, так как пункт назначения теперь является экземпляром UINavigationController.

1 голос
/ 25 октября 2011

Звучит так, как будто это должно работать, но если он не попробует следующее: 1. Нажмите на переход, который не работает, и дайте ему идентификатор.Допустим, это PopoverToNewSegue.

  1. В файле реализации для контроллера представления всплывающего окна добавьте действие при нажатии кнопки.

  2. Эта функциядолжен вернуть void и добавить следующую строку: [self executeSegueWithIdentifier: @ "PopoverToNewSegue" sender: self];

Это должно запустить ваш переход.Я заметил, что сегы не всегда работают так, как вы ожидаете, но этот работает для меня непременно.

...