gpt4 book ai didi

ios - 需要在 Swift 中的 UITextField 委托(delegate)方法中引用自定义 UITableViewCell,而不使用标签属性

转载 作者:行者123 更新时间:2023-11-28 12:45:53 26 4
gpt4 key购买 nike

我的 UITableView 中有一个包含多个 UITextField 的自定义 UITableViewCell。包含我的 tableView 的我的 ViewController 实现了 UITextFieldDelegate。这意味着当用户与文本字段交互时,UITextField 委托(delegate)方法被触发。

我的问题是我需要从 UITextField 委托(delegate)方法内部访问自定义 UITableViewCell 中包含的文本字段。挑战在于:不幸的是,我无法使用 UITextField 具有的“标记”属性。 “标签”属性被用于其他用途,不幸的是,在项目的这一点上,我无法重构它。

例如,在下面的委托(delegate)方法中:

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

//instead of: if textField.tag == someNumber
//I would like to have something like:
//if textField == cell.textFieldA {
//...
//} else if textField == cell.textFieldB {
//...
//}
...
}

有没有人有什么想法或建议?

最佳答案

您可以创建 UITextField 的扩展。像这样:

extension UITextField {

private struct AssociatedKeys {

static var someId = "someId"

}

@IBInspectable var someId: String? {

get {

return objc_getAssociatedObject(self, &AssociatedKeys.someId) as? String

}

set {

if let newValue = newValue {

objc_setAssociatedObject(self, &AssociatedKeys.someId, newValue as NSString?, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)

}

}

}

}

然后你可以访问和比较:

textField.someId

关于ios - 需要在 Swift 中的 UITextField 委托(delegate)方法中引用自定义 UITableViewCell,而不使用标签属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38136758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com