2017-08-09 45 views
0
var textFD = UITextField.init() 
var tempStr : String! 
var datax = [Tasks]() 
var tempArr = [NSManagedObject]() 
override func viewDidLoad() { 
    super.viewDidLoad() 

    navigationItem.rightBarButtonItem = UIBarButtonItem.init(title: "Add", style: UIBarButtonItemStyle.plain, target: self, action:#selector(myTableViewController.addFunc)) 
    print("Hello") 
    fetchData() 
} 
func addFunc(){ 
    let alertO = UIAlertController.init(title: "Add", message: "Add what you want", preferredStyle: .alert) 
    let saveAct=UIAlertAction.init(title: "Save", style: .default, handler:saveHandler) 
    let cancelAct=UIAlertAction.init(title: "Cancel", style: .default, handler: nil) 
    alertO.addAction(saveAct) 
    alertO.addAction(cancelAct) 
    alertO.addTextField(configurationHandler: { (textFD) in 

     textFD.placeholder="Hey therer" 

     print("textfd text1 is \n\n\n" ,textFD.text!) 
     self.tempStr=textFD.text! 
    }) 
    print("textfd text2 is \n\n\n",textFD.text!) 
    self.present(alertO, animated: true, completion: nil) 
    self.tableView.reloadData() 
    self.tempStr=textFD.text! 

} 
func saveHandler(alert:UIAlertAction){ 
    print("textfd text3 is \n\n\n",textFD.text!) 
    print("Value of tempStr \n\n ",tempStr) 
    let taskX = Tasks(context: context) 
    taskX.mydata = tempStr 
    appDelegate.saveContext() 
    self.tableView.reloadData() 
    print("Value of tempStr \n\n ",tempStr) 

} 

當我點擊按鈕時,addFunc將調用警報,並通過警報控制器調用textfield,稍後將textfield的文本存儲在字符串中。無法在AlertController中添加文本字段

Alertcontroller,textfield over alert和佔位符textfield出現,但當我試圖將文本字段文本存儲到一個字符串(tempStr) 它不能存儲!

+0

In viewDidLoad first alloc string variable。 self.tempStr =「」 – shahnilay86

回答

0

試試這個

編輯

func addFunc(){ 
    let alert = UIAlertController(title: "MESSAGE".localized, message: "ENTER_YOUR_MESSAGE".localized, preferredStyle: .alert) 

      alert.addTextField { (textField) in 
       // textField.placeholder = "Enter your message".localized 
      } 

      alert.addAction(UIAlertAction(title: "TITLE".localized, style: .default, handler: { (action:UIAlertAction!) in 
       let textField = alert.textFields![0] // Force unwrapping because we know it exists. 
       //print("Text field: \(String(describing: textField?.text))") 

       if (textField.text?.characters.count)! > 0 
       { 
        self.tempStr = textField.text 

       } 
       else 
       { 
        print("empty text") 
       } 
      })) 
      self.present(alert, animated: true, completion: nil) 
} 
+0

我試過了,但我無法存儲textFD.text!在self.tempStr @Kamlesh Shingarakhiya – Paris0

+0

@ Paris0請檢查我的編輯 –

0

屬性這個類的textFD不是一個顯示在alertO,文本框的configurationHandler只是提供了一個封閉,以幫助用戶定製的UIAlertController文本框。

要在UIAlertController上獲得textField的文本,首先需要使用UIAlertController實例的屬性textFields來獲取所需的textFiled,然後使用.text獲取此textFiled的文本。

0
alertO.addTextField(configurationHandler: { (textFD) in 

    textFD.placeholder="Hey therer" 

    print("textfd text1 is \n\n\n" ,textFD.text!) 
    self.tempStr=textFD.text! 
}) 

textfield正在初始化而沒有文本(默認爲空白),tempStr正在存儲一個空白值。您必須在保存操作中保存字符串。

 let saveAct = UIAlertAction.init(title: "Save", style: .default, handler:{ 
      alertAction in 
      let textField = alertO.textFields![0] as UITextField 
      self.tempStr = textField.text 
    }) 
+0

我試過你的解決方案@TroolDestroyer,但它不工作,它墜毀.. – Paris0

+0

@ Paris0你可以描述錯誤,因爲我已經成功實施它發佈之前 –