2017-02-28 17 views
1

基本上,i have an alert controller set up so that when i click a button in the view controller, an alert controller pops up and i can type words into a textfield, click an "OK" button它将该文本插入视图控制器中的标签。我扩展了这种能力,以便我可以有preset keywords (like "Good," "Likely" and "Almost") that i can select from in the alert controller to speed up the typing process, as these words are typed a lot in my app.我在想,如果你还可以编辑我选择的关键词?每次我尝试添加文本到标签中的任何文本时,我都必须从空白文本框开始。标签 - > Alert Controller Textfield?我可以在警报控制器的文本字段中编辑标签中的预先存在的文本吗? Swift 3,Xcode 8,IOS

具体来说,无论我的标签中是否有文本,我可以在文本框中准备好文本以进行编辑,下次我拉起警报控制器?

这是我到目前为止,第二图像:

//Editable Text Box with Preset Keywords 

@IBOutlet weak var UselessLabel: UILabel! 

@IBAction func UselessTapped(_ sender: UIButton) { 
    print("Useless Button Tapped") 
    openUselessAlert() 

} 

func openUselessAlert() { 

    //Create Alert Controller 
    let alert9 = UIAlertController (title: "Uselss:", message: nil, preferredStyle: UIAlertControllerStyle.alert) 

    //preset keyword as button in alert controller 
    let bt1 = UIAlertAction(title: "Good", style: UIAlertActionStyle.default){ 
     (action) in self.UselessLabel.text = "Good"} 

    alert9.addAction(bt1) 

    //preset keyword as button in alert controller 
    let bt2 = UIAlertAction(title: "Likely", style: UIAlertActionStyle.default){ 
     (action) in self.UselessLabel.text = "Likely"} 

    alert9.addAction(bt2) 

    //preset keyword as button in alert controller 
    let bt3 = UIAlertAction(title: "Almost", style: UIAlertActionStyle.default){ 
     (action) in self.UselessLabel.text = "Almost"} 

    alert9.addAction(bt3) 

    //Create Cancel Action 
    let cancel9 = UIAlertAction(title: "CANCEL", style: UIAlertActionStyle.cancel, handler: nil) 

    alert9.addAction(cancel9) 


    //Create OK Action 
    let ok9 = UIAlertAction(title: "OK", style: UIAlertActionStyle.default) { (action: UIAlertAction) in print("OK") 
     let textfield = alert9.textFields?[0] 
     print(textfield?.text!) 
     self.UselessLabel.text = textfield?.text! 
    } 

    alert9.addAction(ok9) 

    //Add Text Field 
    alert9.addTextField { (textfield: UITextField) in 
     textfield.placeholder = "Useless" 
    } 

    //Present Alert Controller 
    self.present(alert9, animated:true, completion: nil) 
} 

请帮帮忙!我对Xcode和编程一般都很陌生,所以在我看来,这是一个很大的白痴。

谢谢:)

+1

没有违法替换占位符,但如果你在你的代码仔细看它的死简单地实现这一点。只需将'textfield.text'属性设置为所需值而不是设置其占位符。就那么简单。 – Losiowaty

+0

我试过“textfield.text = self.UselessLabel.text”,并且工作,但只做了一半的工作。它允许我编辑标签中的现有单词,但是如何将预设关键字添加到标签中的任何内容?当我点击一个预设关键字时,问题就出现了,它只会在标签中显示该关键字,并删除之前的任何内容。 – DanielG

+0

啊,这实际上是有点棘手:)你需要修改你的动作处理程序,以便他们追加文本,而不是设置预定义的常量。如果你谷歌“斯威夫特追加标签”你一定会找到有用的;) – Losiowaty

回答

0

只是文字

//Editable Text Box with Preset Keywords 

@IBOutlet weak var UselessLabel: UILabel! 

@IBAction func UselessTapped(_ sender: UIButton) { 
    print("Useless Button Tapped") 
    openUselessAlert() 

} 

func openUselessAlert() { 

    //Create Alert Controller 
    let alert9 = UIAlertController (title: "Uselss:", message: nil, preferredStyle: UIAlertControllerStyle.alert) 

    //preset keyword as button in alert controller 
    let bt1 = UIAlertAction(title: "Good", style: UIAlertActionStyle.default){ 
     (action) in self.UselessLabel.text = "Good"} 

    alert9.addAction(bt1) 

    //preset keyword as button in alert controller 
    let bt2 = UIAlertAction(title: "Likely", style: UIAlertActionStyle.default){ 
     (action) in self.UselessLabel.text = "Likely"} 

    alert9.addAction(bt2) 

    //preset keyword as button in alert controller 
    let bt3 = UIAlertAction(title: "Almost", style: UIAlertActionStyle.default){ 
     (action) in self.UselessLabel.text = "Almost"} 

    alert9.addAction(bt3) 

    //Create Cancel Action 
    let cancel9 = UIAlertAction(title: "CANCEL", style: UIAlertActionStyle.cancel, handler: nil) 

    alert9.addAction(cancel9) 


    //Create OK Action 
    let ok9 = UIAlertAction(title: "OK", style: UIAlertActionStyle.default) { (action: UIAlertAction) in print("OK") 
     let textfield = alert9.textFields?[0] 
     print(textfield?.text!) 
     self.UselessLabel.text = textfield?.text! 
    } 

    alert9.addAction(ok9) 

    //Add Text Field 
    alert9.addTextField { (textfield: UITextField) in 
     textfield.text = "Useless" 
    } 

    //Present Alert Controller 
    self.present(alert9, animated:true, completion: nil) 
} 
+0

OP想从标签文本插入到文本字段。 – Losiowaty

相关问题