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中如果EditViewUIView的子类或者在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