如何以编程方式为我的collectionView UITextFields提供标签?

时间:2018-03-09 20:58:35

标签: ios uitextfield

提前感谢您的阅读。新手在这里。

我有collectionView。在其中,我使用自定义collectionViewCell来重复我的自定义cell。每个单元格由2 UILabels和1 UITextfield组成。

我想在所有textfields中输入信息,一旦我点击我的计算button,我想记录数据。我尝试使用cellForItemAtIndexPath分配标记。

我的代码如下

var inputNamesArray = ["Ice Cream", "Number of Scoops", "Main Dish", "Side Dish"]

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellId", for: indexPath) as? inputCell else {
        fatalError()
    }

    let inputLabels = inputNamesArray[indexPath.row]
    let inputUnits = unitArray[indexPath.row]

    cell.inputLabel.text = inputLabels
    cell.inputText.tag = inputLabels.count //this isn't working
    cell.inputUnitLabel.text = inputUnits  
   // cell.inputText.allowsEditingTextAttributes = true
    return cell
}

inputLabel inputTextinputUnitLabel是标签和文字字段的名称。

有人知道如何在uitextfield方法中为cellForItemAtIndexPath提供代码吗?

我还阅读了Apple文档,可以使用enum,但我真的不明白怎么做。

任何帮助,使用give tags to my (reusable cell) UITextfields so that I can store and use the data的任何方法都会非常有帮助!非常感谢!!

P.S。我知道上面的代码不起作用的原因是因为我正在使用

 override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    print(indexPath.count)
}

并打印出标签的标签,但是当我点击文本字段时没有标签。我也尝试删除

cell.inputText.tag = inputLabels.count

但它仍然没有为textfields返回任何标记。

p.s.2如果您感兴趣,这是我的计算按钮的代码,如果有什么我可以在那里做,请告诉我:))

   @objc func calculateButtonActions() {
    print("calculate tap worked")
    let layout = UICollectionViewFlowLayout()
    let resultsPage = ResultsPageController(collectionViewLayout: layout)
    self.navigationController?.pushViewController(resultsPage, animated: true)
}

和ViewDidLoad()

中的此声明
ViewDidLoad() {
let button = UIButton(frame: CGRect(x: 0, y: 550, width:     view.frame.width, height: 100))
    button.setTitle("Calculate", for: .normal)
    button.setTitleColor(.white, for: .normal)
    button.backgroundColor = UIColor.gray

    button.addTarget(self, action: #selector(calculateButtonActions), for: .touchUpInside)
    self.view.addSubview(button)

}

再次感谢!

1 个答案:

答案 0 :(得分:1)

cellForItemAt委托中设置cell.inputText.delegate = self

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell : CollectionViewCell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionViewCell", for: indexPath) as! CollectionViewCell // REPLACE YOUR CELL NAME WITH CollectionViewCell

        cell.inputText.delegate = self
        return cell
    }

现在,您可以使用textViewDidBeginEditing委托来获取分页文本视图数据,如下所示。

extension ViewController: UITextViewDelegate { // REPLACE ViewController with Your ViewController Name
    func textViewDidBeginEditing(_ textView: UITextView) {
        var cell: CollectionViewCell?
        cell = textView.superview?.superview as? CollectionViewCell
        print(cell?.txtVW.text as! String)
    }
}