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