2015-01-19 13 views
0

Я медленно становлюсь быстрым.Функция Swift & Xcode 6 Если Else запускается и не останавливается

Не самый сложный, но все же дающий мне проблемы с потоком с моей логической точки зрения.

У меня есть функция, которая сравнивается, если textField пуст.

Если он пуст, он вызывает предупреждение окна и вызывает функцию для анимации текстового поля, чтобы встряхнуть и выбрасывает экран предупреждения. Я, наконец, получил эту работу, но теперь, когда оператор IF запускается БЕЗ всплывающего окна предупреждения, код не останавливается в инструкции If и запускает весь код.

Я пытаюсь получить код для вызова функции в разделе IF и подготовиться к segue в разделе else.

Вот текущий рабочий код:

func alert() { 

    let animation = CABasicAnimation(keyPath: "position") 
    animation.duration = 0.1 
    animation.repeatCount = 4 
    animation.autoreverses = true 
    animation.fromValue = NSValue(CGPoint: CGPointMake(numOfGuestsData.center.x - 15, numOfGuestsData.center.y)) 
    animation.toValue = NSValue(CGPoint: CGPointMake(numOfGuestsData.center.x + 15, numOfGuestsData.center.y)) 
    numOfGuestsData.layer.addAnimation(animation, forKey: "position") 
} 
@IBAction func checkText(sender: UIButton) { 

    if self.numOfGuestsData.text == "" { 

     AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate)) 

     alert() 

     let alertController = UIAlertController(title: "Split The Bill", message: 
     "Please Enter The Number of Guests!", preferredStyle: UIAlertControllerStyle.Alert) 
     alertController.addAction(UIAlertAction(title: "Okay", style: UIAlertActionStyle.Default,handler: nil)) 
     presentViewController(alertController, animated: true, completion: nil) 


    } else { 

     println("everything is Ok Here") 

    } 

} 

Вот что я пытаюсь acheieve, но не работает правый

func alert() { 

    let animation = CABasicAnimation(keyPath: "position") 
    animation.duration = 0.1 
    animation.repeatCount = 4 
    animation.autoreverses = true 
    animation.fromValue = NSValue(CGPoint: CGPointMake(numOfGuestsData.center.x - 15, numOfGuestsData.center.y)) 
    animation.toValue = NSValue(CGPoint: CGPointMake(numOfGuestsData.center.x + 15, numOfGuestsData.center.y)) 
    numOfGuestsData.layer.addAnimation(animation, forKey: "position") 
} 
@IBAction func checkText(sender: UIButton) { 

    if self.numOfGuestsData.text == "" { 

     AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate)) 
     alert() 
    println("something is wrong here") 

    } else { 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) { 
    let subTotalVC = segue.destinationViewController as subTotalAmountViewController 

     subTotalVC.numOfGuests = numOfGuestsData.text 


    } 
     println("everything is Ok Here") 

    } 

} 

Любые идеи, почему оператор if не работает, когда окно предупреждения там отсутствует?

+0

Hi Joe. Всего несколько идей. Я уверен, что вы опередили меня на этом, вы определяете функцию переопределения внутри блока if then/else. Переменные (и, возможно, функции), определенные внутри оператора if, привязаны к оператору if, то есть они не будут распознаваться кодом вне оператора if. Я вижу, что вы определяете функцию, но я не вижу, чтобы вы ее называли. Кроме того, я никогда не определял функцию внутри оператора if. Я не знаю, как это будет работать. – jwlaughton

+0

Я думаю, что функция вызывается с кодом «alert()». Я новичок в этом, поэтому я не знаю, что быстро делает с определенными вещами. Благодаря! –

+0

Просто для смеха, положите точку останова внутри функции переопределения и посмотрите, вызван ли он когда-либо. – jwlaughton

ответ

0

Это то, что точка останова выглядит, когда она установлена.

enter image description here