如何在同一个视图控制器上分割文本字段(swift 3)

Posted

技术标签:

【中文标题】如何在同一个视图控制器上分割文本字段(swift 3)【英文标题】:how to segue a textfield on the same view controller (swift 3) 【发布时间】:2017-04-07 18:34:08 【问题描述】:

我有 2 个文本字段。我希望在文本字段 a 中输入的内容显示在文本字段 b 中。但是 textfield b 仅用于显示。用户只能在文本字段 a 中输入名称。用户在文本字段 a 中输入名称,它将显示在文本字段 b 中。

    import UIKit

class ViewController: UIViewController 

@IBOutlet var a: UITextField!
@IBOutlet var b: UITextField!
override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    b.isEnabled = false





override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.

enter image description here

【问题讨论】:

【参考方案1】:
import UIKit

class ViewController: UIViewController 
@IBOutlet weak var a: UITextField!
@IBOutlet weak var b: UITextField!

override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    b.isEnabled = false


override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.





// use extensions your code will be clear always 
// UITextfield delegate
extension ViewController: UITextFieldDelegate 
func textFieldDidEndEditing(_ textField: UITextField) 
    // if you have many textfields and the user dismissed the keyboard or tapped any other textfield
    if textField === a 
        b.text = textField.text
    


// if the user clicked the return key in keyboard
func textFieldShouldReturn(_ textField: UITextField) -> Bool 
    // this works if you have only a and b textfields
    // b.text = textField.text

    // use this if statment if you have many text fields
    if textField === a 
        b.text = textField.text
    
    return true


func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool 
    // if you want to see your text changes live as soon as the user clicks any button
    b.text = textField.text

    return true
  


不要忘记连接 TextFields 以从情节提要或 nib 进行委托

【讨论】:

我怎么能写一个函数把它放在视图中确实加载不需要按下按钮。函数 a 中的任何内容都会自动显示在函数 b 中。 我没有完全理解你的问题,但你可以轻松地在函数之间传递数据【参考方案2】:

您可以使用文本字段的委托方法,例如“textfieldEndEditing”或“textfieldShouldChangeCharacterinrange”,在此委托方法中您可以设置文本字段的文本 b。第二件事,如果您只想显示文本,那么您也可以使用 uilable 代替 textfield b!

【讨论】:

以上是关于如何在同一个视图控制器上分割文本字段(swift 3)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 swift 4 中的另一个表视图控制器中获取该表视图单元格中的文本字段文本?

Swift:当键盘出现时如何让视图控制器滚动到文本字段

Swift:数组、文本字段和 UITableView

当所有文本字段都填写在uitableviewcell(SWIFT)中时如何启用按钮

点击文本字段时用选择器视图替换键盘(Swift、Storyboard、iOS 9、Xcode 7)

如何在 Swift 中一一显示 UITextField?