কীভাবে পাঠ্যফিল্ডটি সুইফটে ইউআইএলার্টকন্ট্রোলারে যুক্ত করতে হয়


96

আমি একটি UIAlertControllerদিয়ে একটি দেখানোর চেষ্টা করছি UITextView। আমি যখন লাইনটি যুক্ত করব:

    //Add text field
    alertController.addTextFieldWithConfigurationHandler { (textField) -> Void in
    }        

আমি একটি Runtimeত্রুটি পেয়েছি :

মারাত্মক ত্রুটি: একটি alচ্ছিক মান মোড়ক দেওয়ার সময় অপ্রত্যাশিতভাবে শৃঙ্খলা পাওয়া গেল

    let alertController: UIAlertController = UIAlertController(title: "Find image", message: "Search for image", preferredStyle: .Alert)

    //cancel button
    let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in
        //cancel code
    }
    alertController.addAction(cancelAction)

    //Create an optional action
    let nextAction: UIAlertAction = UIAlertAction(title: "Search", style: .Default) { action -> Void in
        let text = (alertController.textFields?.first as! UITextField).text
        println("You entered \(text)")
    }
    alertController.addAction(nextAction)

    //Add text field
    alertController.addTextFieldWithConfigurationHandler { (textField) -> Void in
        textField.textColor = UIColor.greenColor()
    }
    //Present the AlertController
    presentViewController(alertController, animated: true, completion: nil)

এটি আমার ViewControllerমাধ্যমে উপস্থাপিত হয়েছে an এর মাধ্যমে IBAction

আমি থেকে কোড ডাউনলোড করেছেন এখানে এবং এটি কাজ করে জরিমানা। আমি আমার কোডটিতে সেই পদ্ধতিটি অনুলিপি করে আটকালাম এবং এটি ভেঙে যায়। শেষ লাইনে স্ব উপস্থিতির কোনও প্রভাব নেই।


UITextFieldবরং UITextView?
বেন

উত্তর:


194

সুইফট 5.1

alert.addTextField { (textField) in
    textField.placeholder = "Enter First Name"
}

এই কোডটি ব্যবহার করুন, আমি এই অ্যাপ্লিকেশনটিতে এই কোডটি সফলভাবে চালাচ্ছি।

@IBAction func addButtonClicked(sender : AnyObject){
    let alertController = UIAlertController(title: "Add New Name", message: "", preferredStyle: UIAlertControllerStyle.Alert)
    alertController.addTextFieldWithConfigurationHandler { (textField : UITextField!) -> Void in
        textField.placeholder = "Enter Second Name"
    }
    let saveAction = UIAlertAction(title: "Save", style: UIAlertActionStyle.Default, handler: { alert -> Void in
        let firstTextField = alertController.textFields![0] as UITextField
        let secondTextField = alertController.textFields![1] as UITextField
    })
    let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Default, handler: {
        (action : UIAlertAction!) -> Void in })
    alertController.addTextFieldWithConfigurationHandler { (textField : UITextField!) -> Void in
        textField.placeholder = "Enter First Name"
    }
    
    alertController.addAction(saveAction)
    alertController.addAction(cancelAction)
    
    self.presentViewController(alertController, animated: true, completion: nil)
}

সম্পাদিত: সুইফট 3.0 সংস্করণ

@IBAction func addButtonClicked(_ sender: UIButton){
    let alertController = UIAlertController(title: "Add New Name", message: "", preferredStyle: .alert)
    alertController.addTextField { (textField : UITextField!) -> Void in
        textField.placeholder = "Enter Second Name"
    }
    let saveAction = UIAlertAction(title: "Save", style: .default, handler: { alert -> Void in
        let firstTextField = alertController.textFields![0] as UITextField
        let secondTextField = alertController.textFields![1] as UITextField
        print("firstName \(firstTextField.text), secondName \(secondTextField.text)")
    })
    let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: { (action : UIAlertAction!) -> Void in })
    alertController.addTextField { (textField : UITextField!) -> Void in
        textField.placeholder = "Enter First Name"
    }

    alertController.addAction(saveAction)
    alertController.addAction(cancelAction)
    
    self.present(alertController, animated: true, completion: nil)
}

23

সুইফট 3.0 এ একটি পাঠ্য ক্ষেত্র যুক্ত করতে:

let alertController = UIAlertController(title: "Title", message: "", preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "Save", style: .default, handler: { alert -> Void in
    let textField = alertController.textFields![0] as UITextField
    // do something with textField
}))
alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
alertController.addTextField(configurationHandler: {(textField : UITextField!) -> Void in
    textField.placeholder = "Search"
})   
self.present(alertController, animated: true, completion: nil)

11

সুতরাং আমি আমার কোডটিতে ওয়ার্কিং কোডের চেয়ে আলাদা হতে পারে তা দেখতে পরীক্ষা শুরু করেছিলাম। আমি লক্ষ্য করেছি যে আমার ভিউকন্ট্রোলারটি প্রসারিত

UITextFieldDelegate

যার স্পষ্টতই অর্থ হ'ল আমার যে কোনও শিশু ইউআইটিেক্সটভিউয়ের প্রতিনিধি সেট করা দরকার:

alertController.addTextFieldWithConfigurationHandler { (textField) -> Void in
    searchTextField = textField
    searchTextField?.delegate = self //REQUIRED
    searchTextField?.placeholder = "Enter your search terms"
}

10

সমাধান:

সুইফট 4.2

নিম্নলিখিত লাইনগুলি ব্যবহার করে দেখুন এবং এটি কার্যকর হয় কিনা দেখুন:

let alertController = UIAlertController(title: "Add New Name", message: "", preferredStyle: .alert)

alertController.addTextField { (textField : UITextField!) -> Void in
    textField.placeholder = "Enter Second Name"
}

let saveAction = UIAlertAction(title: "Save", style: .default, handler: { alert -> Void in
    let firstTextField = alertController.textFields![0] as UITextField
    let secondTextField = alertController.textFields![1] as UITextField
})

let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil )

alertController.addTextField { (textField : UITextField!) -> Void in
    textField.placeholder = "Enter First Name"
}

alertController.addAction(saveAction)
alertController.addAction(cancelAction)

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

আশা করি এটা সাহায্য করবে.


দুজনের ক্রম কি alertController.addTextFieldসঠিক? দেখে মনে হচ্ছে "দ্বিতীয় নাম" "প্রথম নাম" এর উপরে প্রদর্শিত হবে।
বেন

6

অ্যালার্টভিউতে টেক্সটফিল্ড কীভাবে যুক্ত করবেন? আসুন এটি সংক্ষিপ্ত এবং সহজ রাখুন।

এটি সুইফট 3.0 এবং তারপরের জন্য কাজ করে।

var nameField: UITextField?
let alertController = UIAlertController(title: "Add Number", message: nil, preferredStyle: .alert)
// Add textfield to alert view
alertController.addTextField { (textField) in
    nameField = textField
}

প্রথমে, আপনি কোনও বস্তুর তাত্ক্ষণিককরণ করেন UIAlertControllerএবং তারপরে আপনি শ্রেণীর addTextFieldসদস্য অ্যাক্সেস করে এতে একটি পাঠ্য ক্ষেত্র যুক্ত করেন UIAlertController


4

একটি পাঠ্য ফিল্ড সহ সতর্কতা নিয়ন্ত্রণকারী যুক্ত করতে (সুইফট 5)

func openAlert(){
    let alertController = UIAlertController(title: "Title", message: "", preferredStyle: .alert)
    alertController.addTextField { (textField : UITextField!) -> Void in
        textField.placeholder = "Enter name"
    }

    let saveAction = UIAlertAction(title: kAlertConfirm, style: .default, handler: { alert -> Void in
        if let textField = alertController.textFields?[0] {
            if textField.text!.count > 0 {
                print("Text :: \(textField.text ?? "")")
            }
        }
    })

    let cancelAction = UIAlertAction(title: kAlertCancel, style: .default, handler: {
        (action : UIAlertAction!) -> Void in })

    alertController.addAction(cancelAction)
    alertController.addAction(saveAction)

    alertController.preferredAction = saveAction

    self.present(alertController, animated: true, completion: nil)
}

3

সুইফট ৪.০ এর জন্য, আপনি কোডের এই নমুনাটি সফলভাবে আমার প্রকল্পে পরীক্ষিত ব্যবহার করতে পারেন:

@IBAction func withdrawTapped(_ sender: UIButton) {

  let alertController = UIAlertController(title: "Token withdraw", message: "", preferredStyle: .alert)

  let withdrawAction = UIAlertAction(title: "Withdraw", style: .default) { (aciton) in

    let text = alertController.textFields!.first!.text!

    if !text.isEmpty {
      self.presentAlert(
        title: "Succesful", 
        message: "You made request for withdraw \(textField.text) tokens")
    }
  }

  let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (action) in
  }

  alertController.addTextField { (textField) in
    textField.placeholder = "999"
    textField.keyboardType = .decimalPad
  }

  alertController.addAction(withdrawAction)
  alertController.addAction(cancelAction)

  self.present(alertController, animated: true, completion: nil)
}

3

সুইফটে 4.2 এবং এক্সকোড 10.1

সঙ্গে সতর্কতা দুই Textfields এবং পড়ুন পাঠ্যক্ষেত্র টেক্সট ডাটা এবং সকল দৃশ্য উপরে উপস্থিত সতর্কতা

func alertWithTF(title: String, message: String) {
    //Step : 1
    let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert)

    //Step : 2
    alert.addAction (UIAlertAction(title: "Save", style: .default) { (alertAction) in
        let textField = alert.textFields![0]
        let textField2 = alert.textFields![1]
        if textField.text != "" {
            //Read textfield data
            print(textField.text!)
            print("TF 1 : \(textField.text!)")
        } else {
            print("TF 1 is Empty...")
        }
        if textField2.text != "" {
            //Read textfield data
            print(textField2.text!)
            print("TF 2 : \(textField2.text!)")
        } else {
            print("TF 2 is Empty...")
        }
    })

    //Step : 3
    //For first TF
    alert.addTextField { (textField) in
        textField.placeholder = "Enter your first name"
        textField.textColor = .red
    }
    //For second TF
    alert.addTextField { (textField) in
        textField.placeholder = "Enter your last name"
        textField.textColor = .blue
    }

    //Cancel action
    alert.addAction(UIAlertAction(title: "Cancel", style: .default) { (alertAction) in })
   self.present(alert, animated:true, completion: nil)

}

আপনি যদি সমস্ত দর্শনের শীর্ষে অ্যালার্ট উপস্থাপন করতে চান।

এখানে উপরের কোড থেকে এই শেষ লাইনটি সরান self.present(alert, animated:true, completion: nil)এবং নীচে কোড যুক্ত করুন।

//Present alert on top of all views.
let alertWindow = UIWindow(frame: UIScreen.main.bounds)
alertWindow.rootViewController = UIViewController()
alertWindow.windowLevel = UIWindowLevelAlert + 1

alertWindow.makeKeyAndVisible()

alertWindow.rootViewController?.present(alert, animated:true, completion: nil)

এখন এই মত কল

alertWithTF(title: "This is title", message: "This is message")

1

পাঠ্যক্ষেত্রটি কীভাবে ব্যবহার করা যেতে পারে তা দেখানোর জন্য দুর্দান্ত উত্তর দিন:

func addRow (row: Int, bodin: String, flag: Int) {
    let alertController = UIAlertController(title: bodin, message: "", preferredStyle: .alert)
    alertController.addAction(UIAlertAction(title: "Save", style: .default, handler: {
        alert -> Void in
        _ = alertController.textFields![0] as UITextField

    }))
    alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))

    alertController.addTextField(configurationHandler: {(textField : UITextField!) -> Void in
        switch flag {
        case 0:
            textField.keyboardType = UIKeyboardType.phonePad
            textField.placeholder = "Enter Number"
        case 1:
            textField.keyboardType = UIKeyboardType.emailAddress
            textField.placeholder = "Enter Email"
        default:
            break
        }

    })

1

ইউআইএলার্টকন্ট্রোলারে টেক্সটফিল্ড এবং সুইফটে ইউআইএলবেলে টেক্সটফিল্ড পাঠ্য প্রদর্শন প্রদর্শন করুন

let alert = UIAlertController(title: "Alert", message: "", preferredStyle: .alert)

alert.addTextField { (textField) in
textField.placeholder = "First Name"
}
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { [weak alert] (_) in
let textField = alert?.textFields![0]
self.label.text = textField?.text  }))

self.present(alert, animated: true, completion: nil)

1

UIAlertControllerসঙ্গে UITextfieldসর্বশেষ এ অ্যাপল সুইফট সংস্করণ 5.1.3

আপনার , যোগ করুন , ক্রিয়াকলাপে সতর্কতা দেখান এর একটি lazy ভেরিয়েবল তৈরি করুন :UIAlertControllerUIViewControllerUITextFieldDelegateUIButton

class  YourViewController: UIViewController,UITextFieldDelegate {

    //Create Alert Controller Object here
    lazy var alertEmailAddEditView:UIAlertController = {

        let alert = UIAlertController(title:"My App", message: "Customize Add/Edit Email Pop Up", preferredStyle:UIAlertController.Style.alert)

        //ADD TEXT FIELD (YOU CAN ADD MULTIPLE TEXTFILED AS WELL)
        alert.addTextField { (textField : UITextField!) in
            textField.placeholder = "Enter  emails"
            textField.delegate = self
        }

        //SAVE BUTTON
        let save = UIAlertAction(title: "Save", style: UIAlertAction.Style.default, handler: { saveAction -> Void in
            let textField = alert.textFields![0] as UITextField
            print("value entered by user in our textfield is: \(textField.text)")
        })
        //CANCEL BUTTON
        let cancel = UIAlertAction(title: "Cancel", style: UIAlertAction.Style.default, handler: {
            (action : UIAlertAction!) -> Void in })


        alert.addAction(save)
        alert.addAction(cancel)

        return alert
    }()


    //MARK:- UIButton Action for showing Alert Controller
    @objc func buttonClicked(btn:UIButton){
        self.present(alertEmailAddEditView, animated: true, completion: nil)
    }

    //MARK:- UITextFieldDelegate
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
    }
}

শুভ কোডিং !! :)


0

সুইফট 5

প্রথম শ্রেণি UITextFieldDelegate মেনে চলে, তারপরে নতুন পাঠ্য ফিল্ড সম্পত্তি তৈরি করুন ield

    private var myTextField : UITextField?

    // now where u want to add code
    let alertContoller = UIAlertController.init(title: "Add", message: "My message to user", preferredStyle: .alert)
    alertContoller.addTextField { (textField) in
        // make sure your outside any property should be accessed with self here
        self.myTextField = textField
        //Important step assign textfield delegate to self
        self.myTextField?.delegate = self 
        self.myTextField?.placeholder = self.textFieldPlaceholderText
    }
    let action = UIAlertAction.init(title: "Ok", style: .default) { action in
        print("Alert tapped")
    }
    alertContoller.addAction(action)
    present(alertContoller, animated: true, completion:nil)

ধন্যবাদ


0
private func showLoginAlert() {
    let loginAlert = UIAlertController(title: "Login Using Credentials", message: nil, preferredStyle: .alert)
    loginAlert.view.tintColor = .systemBlue

    loginAlert.addTextField { usernameField in
        usernameField.font = .systemFont(ofSize: 17.0)
        usernameField.placeholder = "Username"
    }
    loginAlert.addTextField { passwordField in
        passwordField.font = .systemFont(ofSize: 17.0)
        passwordField.isSecureTextEntry = true
        passwordField.placeholder = "Password"
    }

    let cancelAction = UIAlertAction(title: "Cancel",
                                     style: .destructive,
                                     handler: { _ in
                                        // self.handleUsernamePasswordCanceled(loginAlert: loginAlert)
    })
    loginAlert.addAction(cancelAction)

    let loginAction = UIAlertAction(title: "Login",
                                    style: .default,
                                    handler: { _ in
                                        // self.handleUsernamePasswordEntered(loginAlert: loginAlert)
    })
    loginAlert.addAction(loginAction)
    loginAlert.preferredAction = loginAction
    present(loginAlert, animated: true, completion: nil)
}

সুইফট 5

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.