注册表格与出口集合和标签

问题描述 投票:2回答:1

我是Swift语言的新手。我对Web开发有所了解,但我需要你的帮助。

我需要创建一个带有outlet集合的注册页面。我有4个文本字段,并为每个字段分配了标签。当我使用isfirstresponder()将光标从一个文本域移动到另一个文本域时,它无法工作,当我打印标签时,就像我为其文本字段分配了标签一样,它并不总是打印相同的。

它以随机顺序出现。这是代码。

import UIKit

class ViewController: UIViewController,UITextFieldDelegate {

@IBOutlet var registerTF: [UITextField]!


@IBAction func registerTFTapped(_ sender: UITextField) {

   let tag = sender.tag
   print(tag)
    for tf in registerTF
    {
     if tf.tag == tag
     {

        func textFieldShouldReturn( _ textField: UITextField) -> Bool {

            nextTextFieldToFirstResponder(textField: textField)

            return true;
        }

        func nextTextFieldToFirstResponder(textField: UITextField) {

            if tf.tag == 0 {

                self.becomeFirstResponder()

            }
            else if tf.tag == 1 {

                self.becomeFirstResponder()

            }
            else if tf.tag == 2 {

                self.becomeFirstResponder()

            }
            else if tf.tag == 3 {

                self.resignFirstResponder()

            }

        }

        }
    }
}

//LifeCycle-Starts

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func viewWillAppear(_ animated: Bool) {
    //#
}

override func viewDidAppear(_ animated: Bool) {
    //#
}

override func viewWillDisappear(_ animated: Bool) {
    //#
}

override func viewDidDisappear(_ animated: Bool) {
    //#
}

//LifeCycle-Ends

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}
ios swift iboutletcollection
1个回答
0
投票

这仅在TextFields集合中的顺序等于标签顺序时才有效

import UIKit

class ViewController: UIViewController,UITextFieldDelegate {

    @IBOutlet var registerTF: [UITextField]!

    func nextTag(currentTag:Int)->Int{

        if(currentTag < registerTF!.count - 1){
            return currentTag + 1
        }
        return -1
    }

    func nextTextFieldToFirstResponder(textField: UITextField) {

        let nextTag = self.nextTag(currentTag: textField.tag)

        if(nextTag >= 0){
            self.registerTF![nextTag].becomeFirstResponder()
        }else{
            textField.resignFirstResponder()
        }
    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        self.nextTextFieldToFirstResponder(textField: textField)
        return true
    }

    //LifeCycle-Starts

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

        for textField in registerTF {
            textField.delegate = self
        }
    }

    override func viewWillAppear(_ animated: Bool) {
        //#
    }

    override func viewDidAppear(_ animated: Bool) {
        //#
    }

    override func viewWillDisappear(_ animated: Bool) {
        //#
    }

    override func viewDidDisappear(_ animated: Bool) {
        //#
    }

    //LifeCycle-Ends

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.