当用户在swift

时间:2018-04-15 18:49:44

标签: swift validation model-view-controller uitextfield

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

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

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

现在,在编辑视图中 - 如何让textFieldDelagate来到UserProfileViewController而不是editView类?

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

1 个答案:

答案 0 :(得分:0)

editView中,添加以下代码行

class EditView {

    public weak var textFieldDelegate: UITextFieldDelegate?
}

然后在awakeFromNibEditViewUIView的子类或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