iOS中的MVC方法

MVC是一种将代码分为三个不同部分的体系结构模式。 模型视图控制器。 这是一种流行的体系结构,因为它将用户界面代码与逻辑代码分开。 因此,可以更轻松地在错误发生时进行更新,扩展和查找错误。

三个不同部分的简要概述。

  • 模型 -模型是处理大多数逻辑和数据过程的地方。
  • 视图 -您的UI元素将位于此类内。 由于它不包含任何逻辑,因此也称为类。
  • 控制器 -这是模型和视图之间进行交互的地方。 控制器管理这些交集。

在iOS开发中,将所有代码编写在ViewController可能是诱人的; 实际上,如果您是一个自学成才的开发人员,您可能会实践过。 在本文中,我将演示如何在应用程序的简单注册功能上执行此操作。

我喜欢以编程方式执行此操作。 因此,如果您关注以下内容,请删除Storyboard文件,并确保在项目设置中将“ Main Interface选择保留为空白,并在AppDelegate.swift初始化rootViewController

设定

我将创建三个文件: Register RegisterViewMainController 。 我们的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更容易。

您可以在此处下载完整的源代码以供参考。