swift 用户在 UItextfields 中输入时如何验证和更新模型
How to validate and update the model when user types in UItextfields in swift
我正在创建一个使用 MVC 架构显示用户详细信息的用户个人资料屏幕。
我有 UserProfileViewController,我会根据用户处于编辑模式还是正常模式动态添加视图。
当用户处于正常模式时 - 我加载带有标签的 normalView(我用单独的 xib 设计)以显示模型中的用户详细信息。
当用户处于编辑模式时 - 我加载 editView(我用单独的 xib 设计的),其中 textFields 预填充了模型的值。
我从服务调用中获取用户详细信息并更新模型。
现在,在编辑视图中 - 如何让 textFieldDelagate 进入 UserProfileViewController 而不是 editView class?
并且我需要在用户结束字段编辑时验证和更新模型。
我怎么做?
如果有任何示例或参考,请提供。我已搜索但没有得到解决我的问题的正确答案。
在您的 editView
中,添加这些代码行,
class EditView {
public weak var textFieldDelegate: UITextFieldDelegate?
}
然后在awakeFromNib
中如果EditView
是UIView
的子类或者在viewDidLoad
中如果ViewController
,过滤所有的textFields并如下设置它们的委托,
yourMainView.subviews.filter({ [=11=] is UITextField}).forEach { view in
(view as? UITextField)?.delegate = self.textFieldDelegate
}
现在 UserProfileViewController
添加此一致性,
extension UserProfileViewController: UITextFieldDelegate {
func textFieldDidEndEditing(_ textField: UITextField) {
// TextField editing done
}
}
最后,当您在 UserProfileViewController
中实例化 editView
时,像这样将其 delegate
设置为 self
,
editView.textFieldDelegate = self
我正在创建一个使用 MVC 架构显示用户详细信息的用户个人资料屏幕。
我有 UserProfileViewController,我会根据用户处于编辑模式还是正常模式动态添加视图。
当用户处于正常模式时 - 我加载带有标签的 normalView(我用单独的 xib 设计)以显示模型中的用户详细信息。 当用户处于编辑模式时 - 我加载 editView(我用单独的 xib 设计的),其中 textFields 预填充了模型的值。 我从服务调用中获取用户详细信息并更新模型。
现在,在编辑视图中 - 如何让 textFieldDelagate 进入 UserProfileViewController 而不是 editView class?
并且我需要在用户结束字段编辑时验证和更新模型。 我怎么做? 如果有任何示例或参考,请提供。我已搜索但没有得到解决我的问题的正确答案。
在您的 editView
中,添加这些代码行,
class EditView {
public weak var textFieldDelegate: UITextFieldDelegate?
}
然后在awakeFromNib
中如果EditView
是UIView
的子类或者在viewDidLoad
中如果ViewController
,过滤所有的textFields并如下设置它们的委托,
yourMainView.subviews.filter({ [=11=] is UITextField}).forEach { view in
(view as? UITextField)?.delegate = self.textFieldDelegate
}
现在 UserProfileViewController
添加此一致性,
extension UserProfileViewController: UITextFieldDelegate {
func textFieldDidEndEditing(_ textField: UITextField) {
// TextField editing done
}
}
最后,当您在 UserProfileViewController
中实例化 editView
时,像这样将其 delegate
设置为 self
,
editView.textFieldDelegate = self