iOS中的MVC方法
MVC是一种将代码分为三个不同部分的体系结构模式。 模型视图控制器。 这是一种流行的体系结构,因为它将用户界面代码与逻辑代码分开。 因此,可以更轻松地在错误发生时进行更新,扩展和查找错误。
三个不同部分的简要概述。
- 模型 -模型是处理大多数逻辑和数据过程的地方。
- 视图 -您的UI元素将位于此类内。 由于它不包含任何逻辑,因此也称为伪类。
- 控制器 -这是模型和视图之间进行交互的地方。 控制器管理这些交集。
在iOS开发中,将所有代码编写在ViewController
可能是诱人的; 实际上,如果您是一个自学成才的开发人员,您可能会实践过。 在本文中,我将演示如何在应用程序的简单注册功能上执行此操作。
我喜欢以编程方式执行此操作。 因此,如果您关注以下内容,请删除
Storyboard
文件,并确保在项目设置中将“Main Interface
选择保留为空白,并在AppDelegate.swift
初始化rootViewController
设定
我将创建三个文件: Register
RegisterView
和MainController
。 我们的Register
类将充当我们的模型,其中将包含我们的所有逻辑。 RegisterView
将充当我们的View,并将包含我们的所有用户界面元素,并且MainController
将托管RegisterView
。
注册—模型
在本课程中,我们将使用用户名和密码。 我们想对密码的格式化方式添加一些限制。 首先,我希望密码长度至少为6个字符,并且在继续操作之前,密码和确认密码必须相同。
我们没有使用数据库来保存任何信息。
首先,让我们设置初始化程序,该初始化程序将使用用户名,密码和确认密码。 在那之后,我想要三个功能。
-
validatePasswordLength()
-
validatePasswordAndConfirmPassword()
-
completeRegistration()
validatePasswordLength()
少于5个字符时将引发错误。 如果validatePasswordAndConfirmPassword()
不相等,也会抛出错误。 completeRegistration()函数将在try块中同时调用validatePasswordLength()
和validatePasswordAndConfirmPassword()
函数。
因为我们正在使用try块进行错误处理,所以我们需要一个enum
不同的错误。
枚举验证:错误{
案例密码太短
案例密码
}
完成后
您的代码应如下所示:
RegisterView —查看
如前所述,此类将包含我们的UI元素。 对于此注册页面,我们想向用户询问用户名和密码。 我们还希望另一个密码字段来确认密码。 因此,我们总共需要三个UITextField。 我们还需要一个按钮来执行注册操作。
因为我们是高级开发人员,所以我们将遵循行业标准惯例。 我们将创建四个功能。
-
viewSetup()
-
addViews()
-
getTexts()
-
doneButtonAddTarget()
在viewSetup()
函数内部,我们要以编程方式创建元素。 之后,不要在同一函数中添加元素,而要在addViews()
函数中执行此操作。 getTexts()
函数将使我们能够从功能上从文本字段读取文本,以保持文本字段的完整性。 最后, doneButtonAddTarget()
将允许我们从MainController
添加动作。
您的RegisterView
应该如下所示:
MainController —控制器
最后,我们想将RegisterView
类附加到我们的MainController
类上,并创建允许用户注册的操作。 我们使用RegisterView
类中的getTexts()
函数,并将它们传递给我们的Register
类。
结论
您可以看到我们的代码多么干净整洁,如何将UI元素和逻辑分开。 对于像这样的小型应用程序来说似乎没有必要,但是在构建大型应用程序时实践此体系结构对您有利。
如果要在视图之间切换,可以将一个视图动画化为另一个视图。 我认为,为视图之间的过渡设置动画比使用ViewControllers更容易。
您可以在此处下载完整的源代码以供参考。