2015-03-16 2 views
3

VC1 от 0 до VC3, который имеет клавиатуру и предопределенное наименьшее количество, допустимое в метку. Пользователь может либо добавить номер в конец этой строки, либо удалить номер. Когда «Accept» клавиша нажата, string.toInt() передается VC1 и Segue будет раскручиваться черезкак выполнить проверку состояния, прежде чем segue размотает

@IBAction func unwindToSegue(segue: UIStoryboardSegue, sender:UIStoryboardSegue){ 
    BetLabels[betSourceR].text = BetReturned 
    if BetReturned == ""{} else{ 
     Chip[betSourceR].hidden = false}} 

мне нужно добиться, чтобы ни string.toInt() ниже минимума не принимается, и какая-то функции override func, которая останавливает раскручивание при публикации предупреждения пользователю о том, что этот вход неприемлем.

Как я могу это достичь, когда? Возможно, что-то место в VC3 func prepareForsegue? Или другой метод?

Или может я разъединить «принять» от размотки, и сделать IBAction, что если при минимуме {предупредить пользователя, вернуться к VC3} еще {} VC1.unwindToSegue

+0

Почему вы не проверяете значение, прежде чем пытаться выполнить segue? – rdelmar

+0

тот что я хочу делать. Но поскольку он привязан к 'func unindToSegue', я не уверен, как выполнить эту проверку. – Dustin

+0

Сделайте переход из контроллера вместо кнопки accept, чтобы вы могли вызывать функцию performSegueWithIdentifier, когда выполняются ваши условия. – rdelmar

ответ

2

Для достижения этой цели, соединить Controller из VC3 на свой собственный выход и выберите действие для разматывания.

Дайте этот выход, непосредственно перейти к segue.identifier «ВАШ ВЫХОД TEXT»

Еще в VC3, создайте IBAction для кнопки «Accept».

@IBAction func accept(sender: AnyObject) { 
    if //Condition X is true 
     {performSegueWithIdentifier("YOUR EXIT TEXT", sender: self)} 
    else { 
     //Do this 
     } 
1

Я нашел хороший ответ в этом сообщении СО here.

Хитрость для переопределения shouldPerformSegueWithIdentifier в VC3. Внутри него вы можете поместить свое условие и вернуть false, если segue должен быть остановлен. В противном случае верните true, чтобы сделать segue. Вот пример кода для вашего дела.

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

    if identifier == "submitUnwindSegue"{ 
     if string.toInt() < minimum { 
      //fire an alert controller about the error 
      return false 
     } 
    } 

    //Continue with the segue 
    return true 
Смежные вопросы