2016-05-12 2 views
1

В настоящее время я работаю над двумя разными ViewControllers в своем приложении, мы можем назвать их VC1 и VC2. VC1 отображает регистрационную форму с вопросом в каждой строке UITableView и имеет кнопку редактирования. Кнопка редактирования - это как переход от VC1 и VC2. VC2 отображает интерфейс, который позволит пользователю отредактировать вопрос. Я хочу написать приложение, чтобы вы не могли переходить с VC1 на VC2, если вы не выбрали вопрос (строку) для редактирования. Сейчас у меня есть некоторые из них, но возможно, что у меня есть это в обратном направлении.Swift: Не выполнять segue от выполнения, если условие не выполнено

В VC1:

// this method isn't called until VC2 segues back to VC1... so I don't know how 
// to make sure that a selection has been made before pressing the button 
@IBAction func editQuestion(segue:UIStoryboardSegue) { 
     if let editQuestion = segue.sourceViewController as? VC2 { 

     } 
} 

В VC2:

override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject!) -> Bool { 

    // check to make sure that user has completed all fields of question 
    // if they haven't completed all fields, return false (do not segue) 
    // else segue to VC1 
} 
+0

Проверка перед выполнением segue должна произойти в VC1 перед вызовом performSegueWithIdentifier() – Siriss

+0

Да, я это понимаю. Я не уверен, как это сделать. У вас есть идеи? Структура, которую я имею прямо сейчас, не поддается этому. –

+0

Как вы называете segue для VC2? он подключен в раскадровке? – Siriss

ответ

2

Реализовать в VC1:

override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool { 
     if identifier == <your storyboard segue identifier> { 

     } 
    } 

Подари раскадровки непосредственно перейти идентификатор, а затем вы можете сделать чек в VC1 и вернуть false, если вы не хотите, чтобы произошел переход.

+0

Итак, у меня должен быть mustPerformSeguieWithIdentifier как в VC1, так и в VC2? Можете ли вы это сделать? Я использую идентификатор в VC2. –

+0

Вы должны иметь эту проверку в VC1. Вы можете использовать его в VC2, но он будет полезен только после того, как вы уже перешли на VC2. – Siriss

+0

У меня есть несколько segues в VC1. Будет ли он знать, какие взгляды на переходы? –

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