UIAlertView + TextField = 错误?

Posted

技术标签:

【中文标题】UIAlertView + TextField = 错误?【英文标题】:UIAlertView + TextField = Error? 【发布时间】:2015-06-07 12:38:34 【问题描述】:

我正在制作一个应用程序,以便可以将数据保存到表格视图中,并且我想以某种方式使用 UIAlertView 控制器,以便人们可以使用它来创建一个新的单元格(任务),但我知道如何在其中创建一个 textField一个 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

谢谢,

乔治·巴洛

附言很抱歉这个冗长的问题!

【问题讨论】:

【参考方案1】:

在名为ExitUIAlertAction 中(顺便说一句,您应该考虑将名称更改为exitexitAction),您可以通过以下方式访问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")

【讨论】:

【参考方案2】:

" .. 您还可以将文本字段添加到警报界面。警报控制器允许您在显示之前提供用于配置文本字段的块。警报控制器维护对每个文本字段的引用,以便您可以访问以后的价值。” 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
    ...

【讨论】:

【参考方案3】:

你可以这样做:

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)
        


    

【讨论】:

以上是关于UIAlertView + TextField = 错误?的主要内容,如果未能解决你的问题,请参考以下文章

带有一个文本字段的 UIAlertView(用于登录目的)

UIAlertView设置文本输入框格式

如何限制 UIAlertView UITextField 中的字符输入

如何将 TextField 和 CheckBox 添加到同一个 AlertView

如何为 UITextField 设置 inputDelegate?

NSString 到 NSNumber