提前感谢您的阅读。新手在这里。
我有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
inputText
和inputUnitLabel
是标签和文字字段的名称。
有人知道如何在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)
}
再次感谢!
答案 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)
}
}