UIAlertView + TextField = Грешка?

Създавам приложение, така че данните да могат да се записват в табличен изглед и исках да използвам контролера UIAlertView по начин, така че хората да могат да го използват за създаване на нова клетка (задача), но знам как да направя текстово поле в UIAlertView, но как да използвате данните от textField и да ги използвате в бутон за действие UIAlertView!

@IBAction func addNewTask() {

        var alertController = UIAlertController(title: "Add A New Task", message: "Add The Correct Information To Add A New Task!", preferredStyle: .Alert)

        // Create the actions
        var Exit = UIAlertAction(title: "Add Task", style: UIAlertActionStyle.Default) {
            UIAlertAction in
            NSLog("OK Pressed")


        }
        var cancelAction = UIAlertAction(title: "Exit App", style: UIAlertActionStyle.Cancel) {
            UIAlertAction in
            NSLog("User Exited The App!")
            exit(2)

        }

        alertController.addTextFieldWithConfigurationHandler { (textField: UITextField!) -> Void in
            // Here you can configure the text field (eg: make it secure, add a placeholder, etc)

        }

        // Add the actions
        alertController.addAction(Exit)

        alertController.addAction(cancelAction)

        // Present the controller
        self.presentViewController(alertController, animated: true, completion: nil)



    }

Това е кодът, но как мога да използвам данните от alertController.addTextFieldWithConfigureationHandler и да ги поставя в действието Exit! Така че основното нещо, което искам да направя, е да знам, че когато потребителят въведе в текстовото поле и щракне върху Изход, етикетът ще се промени на този текст от textField, но без да използва viewController! Използвам Swift, Xcode 6.3.1

Благодаря,

Джордж Барлоу

p.s. Извинете за дългия въпрос!


person george barlow    schedule 07.06.2015    source източник


Отговори (3)


Във вашия UIAlertAction, наречен Exit (между другото, трябва да обмислите промяна на името на нещо като exit или exitAction), можете да получите достъп до UITextField и неговото съдържание по следния начин:

// Create the actions
var Exit = UIAlertAction(title: "Add Task", style: UIAlertActionStyle.Default) {
    UIAlertAction in
    let loginTextField = alertController.textFields![0] as! UITextField
    let inputText = loginTextField.text
    println("The input text is: \(inputText)")
    NSLog("OK Pressed")
}
person Kumuluzz    schedule 07.06.2015

" .. можете също да добавите текстови полета към интерфейса за предупреждение. Контролерът за предупреждение ви позволява да предоставите блок за конфигуриране на вашите текстови полета преди показване. Контролерът за предупреждение поддържа препратка към всяко текстово поле, така че да имате достъп до неговата стойност по-късно ." https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAlertController_class/index.html#//apple_ref/occ/cl/UIAlertController

Има свойство на текстово поле на UIAlertViewController, до което имате достъп.

alertController.textFields

Текстовите полета се добавят към този масив в същия ред, в който сте ги добавили към контролера за предупреждения.

Във вашето завършване за изходното действие:

UITextField *taskTextField = alertController.textFields.firstObject

*Редактиране: набързо:

if let taskTextField = alertController.textFields![0] as! UITextField {
    let taskText = taskTextField.text
    ...
}
person robotwholearned    schedule 07.06.2015

Можете да направите нещо подобно:

class ViewController: UIViewController {

        @IBOutlet weak var myLabel: UILabel!
        var mytextField: UITextField!

        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.

        }

        override func viewDidAppear(animated: Bool) {
            addNewTask()
        }

        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }


        func addNewTask() {
            var alertController = UIAlertController(title: "Add A New Task", message: "Add The Correct Information To Add A New Task!", preferredStyle: .Alert)

            // Create the actions
            var Exit = UIAlertAction(title: "Add Task", style: UIAlertActionStyle.Default) {
                UIAlertAction in
                NSLog("OK Pressed")

                self.myLabel.text = self.mytextField.text


            }
            var cancelAction = UIAlertAction(title: "Exit App", style: UIAlertActionStyle.Cancel) {
                UIAlertAction in
                NSLog("User Exited The App!")
                exit(2)

            }

            alertController.addTextFieldWithConfigurationHandler { (textField: UITextField!) -> Void in
                // Here you can configure the text field (eg: make it secure, add a placeholder, etc)

                self.mytextField = textField
            }

            // Add the actions
            alertController.addAction(Exit)

            alertController.addAction(cancelAction)

            // Present the controller
            self.presentViewController(alertController, animated: true, completion: nil)
        }


    }
person Himanshu gupta    schedule 07.06.2015