2014-11-30 2 views
0

Я пытаюсь создать Segue при нажатии на UIView, которое вызывает segue для нового контроллера представлений, который содержит UIView, который был задействован. В основном, использование UIView было всего лишь половиной экрана и делало его размером с весь экран.Использование prepareForSegue в Swift

Я думаю, что я должен использовать prepareForSegue для передачи UIView, который я использовал для нового контроллера представлений, а не для создания нового представления, но я не уверен, что prepareForSegue должен быть автогенерирован и где он должен быть. Я связал жест нажатия на «Show» segue, который открывает новый контроллер вида. Я думал, что prepareForSegue был автоматически сгенерирован в Objective-C, поэтому я не уверен, что я должен его использовать или нет.

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

+0

Я не уверен, что вы подразумеваете под "генерироваться автоматически". Вы должны сами реализовать prepareForSegue, но он вызывается системой, когда инициируется segue (вы сами не называете это). Имейте в виду, что если вы собираетесь передать представление, вы должны сначала удалить его из своего супервизора - он не может быть одновременно в 2-х контроллерах. – rdelmar

+0

По автогенерированию я имел в виду, что это будет в коде контроллера вида автоматически (подпись метода), но я должен был бы реализовать его сам. Однако я не уверен, что это применимо здесь, потому что я не знаю, следует ли мне использовать prepareForSegue или действие UITapGestureRecognizer для переключения контроллеров. – NumberOneRobot

ответ

0

Несколько комментариев по поводу того, что Вы сказали ...

Я думаю, что я должен использовать prepareForSegue передать UIView я повернутым на новый контроллер представления, а не создавать новый вид ...

Вы не передаете UIView новому контроллеру. Вы передаете UIImage, который вы хотите отобразить на новом контроллере.

Я связал жест касания с серией «Показать», которая открывает новый контроллер вида.

Это хорошее начало, также убедитесь, что UIImageView, что вы присоединили жест имеет свой «Взаимодействие с пользователем Enabled» флаг установлен верно в раскадровке (я забыл это один все время.)

Вы должны написать подготовитесь к segue самостоятельно. Вы хотите, чтобы поставить подготовку к методу SEGUE в контроллере представления зарождение ...

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected UIImage to the new view controller. 
} 
+0

То, что я имел в виду, я ожидал, что подпись метода prepareForSegue будет автогенерирована. Кроме того, я хочу, чтобы UIView мог быть нарисован после того, как произойдет segue (но не раньше). Разрешит ли это UIImage? Мне кажется, что UIImage не будет изменяться. Другим вариантом является то, что у меня есть другой UIView, сгенерированный для нового контроллера представлений, который затем сможет быть нарисован после segue. – NumberOneRobot

+0

Я думал, что вы показываете изображение ... Независимо от того, какие данные, отображаемые в UIView, нужно передать новому контроллеру. Вы * не * проходите сам UIView. –

0

Опцион может быть подкласс UIStoryboardSegue и использовать его в качестве пользовательского Segue. Таким образом, вы можете получить доступ к файлам fromVC и toVC, а также к любым представлениям в них, чтобы контролировать, как ваш segue выглядит и работает.

Apple, документы: https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomSegues/CreatingCustomSegues.html

Небольшой пример я нашел: http://www.albertopasca.it/whiletrue/2013/10/objectivec-uistoryboard-custom-transition/

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