【问题标题】:UITextField return key to make change in ViewController?UITextField 返回键在 ViewController 中进行更改?
【发布时间】:2015-05-28 02:52:42
【问题描述】:

我有一个ViewController 和一个名为String 的变量query 和许多UITextField,每个都有自己独立的委托Swift 文件,因为它们都有不同的行为。

UITextField 中常见的一件事是,当用户按回车键时,我想将query 设置为等于textField.text

我认为这应该发生在每个委托文件的 textFieldShouldReturn 方法下,但是我不清楚如何将 textField.text 传递回 ViewController 并将其设置为每个委托 Swift 文件中的 query...

【问题讨论】:

  • 所有这些文本字段是否都在具有query variable?的同一控制器中
  • 为什么每个文本字段都有自己的委托?显示其中一个委托类的示例。
  • 文本字段也可以有一个 IBAction,例如“编辑结束”。您可以将所有文本字段连接到一个操作,并从那里获取它们的文本。
  • 是的,每个textField 都与query 在同一个VC 中。每个textField 是一个搜索字段,一个字段根据用户输入文本搜索标签(设置为query),另外两个用于坐标(一个用于纬度,一个用于经度),它们有自己的var 以及(latVallonVal)另外,后两个字段具有将文本限制为数字的方法 - 和 .这就是为什么我有两个委托类文件 - SearchFieldDelegate.swiftLocFieldDelegate.swift

标签: ios swift delegates uitextfield


【解决方案1】:

你可以像这样使用通知 在viewDidAppear

NSNotificationCenter.defaultCenter().addObserver(self, selector:"didChanged:" , name: UITextFieldTextDidEndEditingNotification, object: nil);

然后

func didChanged(notification:NSNotification){
    //notification conatins your textfield info
    let textfield = notification.object as! UITextField
}

不要忘记删除viewDidDisappear中的观察者

 NSNotificationCenter.defaultCenter().removeObserver(self, name: UITextFieldTextDidEndEditingNotification, object: nil)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2019-12-28
    • 1970-01-01
    相关资源
    最近更新 更多