2015-07-08 3 views
0

Моего вопрос очень похож на: Swift: Make button trigger segue to new sceneПочему UIBarButtonItem не вызывает IBAction до segue?

Вопрос является:

У меня есть контроллер представления, с помощью кнопки, которая вызывает другой вид контроллер появится модально.

У меня есть Ctrl + Нажмите с кнопки на второй контроллер просмотра и создайте сегмент в IB.

Далее I Ctrl + Click от кнопки снова к исходному коду контроллера вида для создания метода IBAction.

Я предположил, что кнопка теперь сделает две вещи: а) вызовет метод IBAction и b) выполнит segue.

Что-то происходит, только по какой-то причине.

Когда я удаляю segue или удаляю вызов контроллера вида из IB, тогда вызывается IBAction, но Xcode сообщает мне, что второй контроллер просмотра недоступен.

Я хочу, чтобы предоставить пользователю ActionSheet, а затем выполнить функциюСообщение ко второму контроллеру представления на основе того, что пользователь выбрал из листа действий.

Я знаю, что я могу запрограммировать код performSegue, но для этого требуется создание segue и прикрепление его к физической кнопке в IB, что наносит ущерб цели не вызывать IBAction, которая может уже иметь эту кнопку.

+0

Одна из многих причин, почему я ненавижу раскадровки (лично я их не использую). Можете ли вы опубликовать его фотографию? – Aggressor

+0

Также необходимо увидеть IBActions у вас для кнопки и segue – Aggressor

+0

@Aggressor Спасибо, но я уже понял это. Спасибо за ответ ниже от knutigro – Ahmad

ответ

5

Если я хочу сделать некоторые дополнительные шаги перед вызовом segue, я обычно присоединяю IBAction к UIButton и вызываю выполнить segue изнутри этого кода. Вы можете добавить segue в раскадровку и дать ему идентификатор, без необходимости подключать его к кнопке. Вы делаете это, управляя щелчком на viewcontroller и перетаскивая его в следующий диспетчер представлений в раскадровке.

2

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

Если есть какая-то логика, которая предшествует, как пользователь, выбирая что-то из листа действий, просто используйте IBAction, а затем выполните сеанс с performSegueWithIdentifier на основе пользовательского выбора. Тем не менее, вам не нужно создавать другую кнопку, только ctrl+drag с одного контроллера вида на другой и дать segue идентификатор.

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