swift - 我在 CollectionViewCell 中的回调无法正常工作
问题描述
我有一个带有 PhoneNumberTextField 的简单 CollectionViewCell 和一个我想发送到我的服务器的回调
class PhoneNumberCollectionViewCell: UICollectionViewCell, NiBLoadable, UITextFieldDelegate {
@IBOutlet weak var phoneLabel: UILabel!
@IBOutlet weak var PhoneNumberTextField: UITextField!
@IBOutlet weak var SecurityLabel: UILabel!
var returnValue: ((_ value: String) -> ())?
override func awakeFromNib() {
super.awakeFromNib()
Decorator.decorate(self)
}
func setPhoneLabelText(text: String) {
phoneLabel.text = text
}
func setSecurityLabel(text: String) {
SecurityLabel.text = text
}
func textFieldDidEndEditing(_ textField: UITextField) {
returnValue?(PhoneNumberTextField.text ?? "") // Use callback to return data
}
}
我也有我的 ViewController 和我的 CollectionView,我无法将我的 phoneNumber 从单元格获取到 ViewController 中的变量。这是代码
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let models = model[indexPath.row]
switch models {
case .phoneNumber:
if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PhoneNumberCollectionViewCell.name, for: indexPath) as? PhoneNumberCollectionViewCell {
cell.setSecurityLabel(text: "_ALLYOURDATAISINSECUREDAREA")
cell.setPhoneLabelText(text: "_YOURPHONENUMBER")
cell.PhoneNumberTextField.text = phoneNumber
cell.returnValue = { value in
self.phoneNumber = value
}
return cell
}
当我打印从 textField 得到的内容时,我得到了 nil
@objc func sendPhoneNumber() {
print("PHONE NUMBER IS - \(String(describing: self.phoneNumber))")
}
我在做什么错???
解决方案
您需要为 textField 设置委托,否则 textField 委托将不起作用。
override func awakeFromNib() {
super.awakeFromNib()
Decorator.decorate(self)
PhoneNumberTextField.delegate = self
}
旁注:不要大写变量和常量。
编辑第二个问题:您要么想要(通过 Xib)创建一个IBAction
在值更改时调用的出口,要么:
textField.addTarget(self, action: #selector(textFieldValueChanged), for: .editingChanged)
每次输入或删除字母时,这两个选项都会调用委托函数。
推荐阅读
- javascript - 看到更多/看到更少禁用仍然无法正常工作
- reactjs - 反应嵌套循环错误
- amazon-web-services - 使用 aws 深度学习 AMI 设置弹性推理加速器
- c++ - 是否有一个函数可以从向量中删除一个元素而不在 c++ stdlib 中移动它?
- javascript - JS:为什么图像 onclick 事件触发时图像亮度没有变化?
- django - 如何在 Django 中人性化测量查询
- javascript - 无法触发 onClick 事件
- docker - 使用 docker 工作流插件时,环境变量不一致
- php - 按当前帖子标题 (ACF) 设置字段
- java - 如何从firebase存储中获取图像的downloadUri