如何从父视图控制器检测容器视图中的焦点UITextField

时间:2019-03-27 10:24:51

标签: ios swift uitextfield segue container-view

我有一个带有多个文本框的容器视图。我在父视图控制器(自定义键盘)中也有一个按钮。我想做的是先选择文本框,然后在我点击按钮时希望将一些值填充到最后一个选定的/重点突出的文本框中。 我怎样才能做到这一点?也欢迎任何其他方式。 (我在原始代码中有多个容器视图,并尝试对所有视图使用一个键盘)

storyboard

$('.btn-filtrar').on('click', function(){
    let id = $(this).closest('tr').data('id');
    let filter_type = $(this).closest('tr').data('type');
    let sort_order = document.getElementById(filter_type +'_sort-order_' + id).value;
    //console.log(id, filter_type, sort_order);


    $.ajax({
        url: "index.php?route=module/eot_filter/saveFilter&token=<?php echo $token; ?>",
        type: "POST",
        data: {
                id:id,
                filter_type:filter_type,
                sort_order:sort_order
            },
        success: function (result) {

                $("#"+ filter_type +"").load(" #"+ filter_type +"");


            }           
        });


});

容器视图控制器

class MainViewController: UIViewController {
    var weightVC : WeightViewController!
    var focusedElement : UITextField

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        if (segue.identifier == "weight") {
            weightVC = segue.destination as? WeightViewController
        }
    }

    @IBAction func button1Clicked(_ sender: Any) {

        if weightVC != nil {
            weightVC.sampleTextBox1.text = "1"
            //I want this sampleTextBox1 to be dynamic like weightVC.focusedInput = "1"
        }

    }
}

extension MainViewController:ChildToParentProtocol {
   func setFocusedElement(with value: UITextField){
      focusedElement = value
   }
}

换句话说,我只是想在点击按钮时保留对上一个焦点突出的UITextFild的引用。希望我的要求足够明确。如果有办法实现,请指导我。

谢谢

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,则可以使用其标记来跟踪点击了String _data = await getData(0, 'id'); Text('This is the output $_data'); 的内容。然后,您可以使用UITextField来获取所选的UITextFieldDelegate标签。

考虑以下UITextField的代码

WeightViewController

现在,在父视图protocol ChildToParentProtocol: class { //Changed value to Int for passing the tag. func setFocusedElement(with value: Int) } import UIKit class WeightViewController: UIViewController { @IBOutlet weak var tf1: UITextField! @IBOutlet weak var tf2: UITextField! var selectedTFTag = 0 weak var delegate: ChildToParentProtocol? = nil override func viewDidLoad() { super.viewDidLoad() //Assign delegate and tags to your TF tf1.delegate = self tf2.delegate = self tf1.tag = 1 tf2.tag = 2 } } extension WeightViewController: UITextFieldDelegate { func textFieldDidBeginEditing(_ textField: UITextField) { //Get the selected TF tag selectedTFTag = textField.tag //Pass tag to parent view delegate?.setFocusedElement(with: selectedTFTag) } } 中,您需要进行一些修改。我在进行更改以满足您的要求的地方添加了评论。

ViewController

您可以检查THIS演示项目以了解更多信息。