【问题标题】:Label -> Alert Controller Textfield? Can I edit pre-existing text from a label, in a textfield in an alert controller? Swift 3, Xcode 8, IOS标签-> 警报控制器文本字段?我可以在警报控制器的文本字段中从标签中编辑预先存在的文本吗?斯威夫特 3,Xcode 8,IOS
【发布时间】:2017-02-28 18:37:30
【问题描述】:

基本上,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. 我想知道你是否也可以编辑我选择的那些关键词?每次我尝试将文本添加到标签中的任何文本时,我都必须从空白文本字段开始。

具体来说,无论我的标签中已有什么文本,我可以在我的文本字段中准备好该文本以进行编辑,下次我拉起警报控制器吗?

这是我到目前为止的第二张图片:

//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 和编程真的很陌生,所以在这方面我是个大白痴。

谢谢:)

【问题讨论】:

  • 无意冒犯,但如果您仔细查看您的代码,实现这一点非常简单。只需将textfield.text 属性设置为所需的值,而不是设置其占位符。就这么简单。
  • 我尝试了 "textfield.text = self.UselessLabel.text" 并且有效,但只完成了一半的工作。它允许我编辑标签中的现有单词,但我如何将预设关键字添加到标签中的任何内容?当我单击预设关键字时出现问题,它仅在标签中显示该关键字并删除之前的所有内容。
  • 啊,这实际上有点棘手 :) 您需要修改您的操作处理程序,以便它们附加文本,而不是设置预定义的常量。如果你用谷歌搜索“Swift append to label”,你一定会找到有用的东西;)
  • 哦,伙计,我注定要失败,哈哈。无论如何你可以帮我写代码吗?你已经帮了很多忙。一半的工作仍然很有用,毕竟你回答了我的问题。我只是不知道如何编码大声笑

标签: ios swift3 label textfield uialertcontroller


【解决方案1】:

只需将占位符替换为文本

//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)
}

【讨论】:

  • OP 希望将标签中的文本插入到文本字段中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 2021-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多