当用户在swift的UItextfields中键入时,如何验证和更新模型

当用户在swift的UItextfields中键入时,如何验证和更新模型,swift,validation,model-view-controller,uitextfield,Swift,Validation,Model View Controller,Uitextfield,我正在创建一个使用MVC架构显示用户详细信息的用户配置文件屏幕 我有UserProfileViewController,我将根据用户处于编辑模式还是正常模式动态添加视图 当用户处于正常模式时-我加载带有标签的normalView(我使用单独的xib设计),以显示模型中的用户详细信息。 当用户处于编辑模式时,我加载editView(我使用单独的xib设计),其中的文本字段预先填充了模型中的值。 我从服务调用中获取用户详细信息并更新模型 现在,在编辑视图中-如何使textFieldDelagate进

我正在创建一个使用MVC架构显示用户详细信息的用户配置文件屏幕

我有UserProfileViewController,我将根据用户处于编辑模式还是正常模式动态添加视图

当用户处于正常模式时-我加载带有标签的normalView(我使用单独的xib设计),以显示模型中的用户详细信息。 当用户处于编辑模式时,我加载editView(我使用单独的xib设计),其中的文本字段预先填充了模型中的值。 我从服务调用中获取用户详细信息并更新模型

现在,在编辑视图中-如何使textFieldDelagate进入UserProfileViewController而不是editView类

当用户结束对字段的编辑时,我需要验证和更新模型。 我该怎么做?
如果有任何示例或参考,请提供。我已经搜索了,但没有得到解决问题的正确答案。

在您的
editView
中,添加以下代码行

class EditView {

    public weak var textFieldDelegate: UITextFieldDelegate?
}
然后在
awakeFromNib
中,如果
EditView
UIView
的子类,或者在
viewDidLoad
中,如果
ViewController
,过滤所有文本字段并将其委托设置为如下所示

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
    }
}
最后,当您在
UserProfileViewController
中实例化
editView
时,将其
delegate
设置为
self
,如下所示

editView.textFieldDelegate = self

因此,您有两个视图,一个视图,一个编辑。您想知道如何根据某些条件加载任一视图,然后在编辑“完成”时如何更新模型吗?因此,首先,您似乎需要某种方式来启动“编辑”模式,比如导航按钮,它让您有机会切换视图。同样,当用户完成编辑时,我会设想您会有一些导航按钮(如“完成”),需要再次点击该按钮,为您提供处理结果的机会