UIAlertController в быстром

Я создаю view controller быстро с несколькими текстовыми полями и accept button который подтверждает ввод пользователя. accept button также проверяет, является ли какое-либо из текстовых полей пустым. Если так, то всплывет alert говоря что-то вроде it cannot be empty, если он не пустой, он сохранит ввод и затем перейдет к другому виду.

Я создал отдельную функцию под названием checEmpty() который выглядит так:

    func checEmpty(title: String, object: UITextField) -> (Bool) {
        if object.text.isEmpty {
            let alertController = UIAlertController(title: "Invalid input", 
                message:"\(title) cannot be empty", 
                preferredStyle: UIAlertControllerStyle.Alert)

            alertController.addAction(UIAlertAction(title: "Dismiss", 
                style: UIAlertActionStyle.Default)

            self.presentViewController(alertController, animated: true, completion: nil)

            return false
        } else {
            return true
        }
    }

И я называю эту функцию в acceptButton действие:

   @IBAction func acceptButton(sender: UIButton){
         if(checEmpty("Event", object: eventName) && checEmpty("Priority", object: Priority)
         { 
                //if not empty, confirm the user input
               // ...
         }

Когда я запускаю его, предупреждающее сообщение работает нормально, но по какой-то причине консоль показывает это:

2015-08-03 12: 11: 50.656 FinishItToday [13777: 688070]> окно не равно окну просмотра!

Может кто-нибудь сказать мне, почему появляется это предупреждение? Большое спасибо!

PS. Я хочу, чтобы, если какое-либо текстовое поле пустое, показывалось предупреждение, а затем оставалось на той же странице. Если ни один из них не пуст, тогда выполните переход и переключитесь на другое представление. Код выше работает нормально, кроме предупреждения.

2 ответа

Вот ваш рабочий код:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var eventName: UITextField!
    @IBOutlet weak var Priority: UITextField!

    @IBAction func acceptButton(sender: UIButton){

        if checEmpty("Event", object: eventName) && checEmpty("Priority", object: Priority){
            println("Both Text Fields Are Empty")
        }
    }

    func checEmpty(title: String, object: UITextField) -> (Bool) {
        if object.text.isEmpty {

            var Alert = UIAlertController(title: "Invalid input", message: "\(title) cannot be empty", preferredStyle: UIAlertControllerStyle.Alert)

            Alert.addAction(UIAlertAction(title: "Dismiss", style: .Cancel, handler: { action in
                println("Click of cancel button")
            }))
            self.presentViewController(Alert, animated: true, completion: nil)

            return false
        } else {
            return true
        }
    }
}

Используйте этот код для оповещения контроллера в Swift. Это может помочь вам.

 import UIKit

 protocol alertViewDelegate {
     func actionActive(index:Int, tag:Int)
 }

 class AlertView: NSObject {

 var delegate:alertViewDelegate!

 func showAlert(title:String, message:String, actionName:NSArray, tag:Int) ->    UIAlertController {
         var alertController:UIAlertController = UIAlertController(title: title, message: message, preferredStyle: .Alert)

         for str: AnyObject in actionName {
         let alertAction:UIAlertAction = UIAlertAction(title: str as! String, style: UIAlertActionStyle.Default, handler: { (action) -> Void in
                 self.delegate.actionActive(actionName.indexOfObject(str), tag:tag)
             })
             alertController.addAction(alertAction)
         }
         return alertController;
     }

 }
Другие вопросы по тегам