在这篇文章中,我们已经深入解释了iOS应用程序中的MVC模式。MVC是Model View Controller的缩写,它是一种软件设计模式,将软件项目分为模型、视图和控制器三个部分。
内容表。
- 什么是MVC软件设计模式?
- MVC如何工作?
- 在iOS应用程序中实现MVC
我们将深入探讨。
什么是MVC软件设计模式?
MVC是Model View Controller的缩写,它是一种软件设计模式,将软件项目组织成模型、视图和控制器三个部分。
模型
模型是该模式的数据存储组件,它使用数据结构来处理所有与UI无关的数据,它也直接管理应用程序的规则和数据。
视图
视图是用户界面,用户通过它与应用程序进行交互。它包括像按钮、表视图、集合视图等UI组件。
控制器
控制器作为模型和视图之间的桥梁,模型和视图只能通过控制器来相互交流。
MVC是如何工作的?
MVC的基本功能如下所示
在这里,用户看到的是视图并与应用程序进行交互。例如,考虑一个在表格视图中以升序排列数字的应用程序。当用户想对数字进行降序排序时,用户通过选择UI(视图)中的排序选项来发送请求,视图将请求发送到控制器,控制器将转到模型组件,使模型组件以降序排序数据,并更新视图中显示的排序数字。
在iOS应用程序中实现MVC
我们将创建一个测验应用程序,它使用MVC模式,所有的问题和他们的答案都将存储在模型层。
- 打开Xcode并创建一个空白的UIKit项目。
- 在项目导航器中创建三个新的组Model、View、Controller并在其中添加以下文件
- 打开Main.storyboard,在这里我们要设计我们的UI,它属于View组件。设计一个类似下图的UI。
- 现在打开QuizModel文件并添加以下代码
import Foundation
class QuizModel
{
static let SharedObj = QuizModel()
private let Questions: [String] = [
"2 + 10 = ?",
"What is capital of Vermont?",
"Who is the founder of Microsoft"
]
private let Answers: [String] = [
"12",
"Montpelier",
"Bill and Paul"
]
func getQuestions() -> [String]
{
return Questions
}
func getAnswers() -> [String]
{
return Answers
}
}
这个结构有两个数组,一个是问题,另一个是答案。在这里我们使用一个单子对象,通过控制器与它们进行交互。
- 打开CustomButton文件,添加以下代码
import Foundation
import UIKit
class CustomButton: UIButton
{
override func awakeFromNib() {
super.awakeFromNib()
layer.cornerRadius = 5
backgroundColor = UIColor.systemOrange
layer.borderWidth = 2
layer.borderColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
}
}
这里我们通过对UIButton类的子类化来定义UIButton的自定义属性。
- 打开控制器文件,为UI组件添加IBOutlets和IBActions,并添加以下几行代码
class ViewController: UIViewController {
var Questions = [String]()
var Answers = [String]()
var currentquestionindex = 0
@IBOutlet weak var QuestionLabel: UILabel!
@IBOutlet weak var AnswerLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
Questions = QuizModel.SharedObj.getQuestions()
Answers = QuizModel.SharedObj.getAnswers()
QuestionLabel.text = Questions.randomElement()
}
@IBAction func NextQuestionButtonPressed(_ sender: Any) {
currentquestionindex += 1
if(currentquestionindex == Questions.count)
{
currentquestionindex = 0
}
else
{
QuestionLabel.text = Questions[currentquestionindex]
}
}
@IBAction func ShowAnswerButtonPressed(_ sender: Any) {
AnswerLabel.text = Answers[currentquestionindex]
}
}
这里我们定义了应用程序的核心功能。这个文件充当控制器。它使用IBOutlets和IBAction接收用户与视图的交互,并将用户的请求发送到模型,从模型中获取数据并更新视图中的数据。
一切准备就绪,现在构建项目并在模拟器中运行它。
让我们用一个小测验来结束这篇文章吧
问题
iOS应用程序中经常使用的另一种软件设计模式是什么?
MVVM
VMC
MVA
视觉模式
MVVM(Model-View-View-Model)是iOS应用中使用的另一种软件设计模式。
通过OpenGenus的这篇文章,你一定对iOS应用中的MVC模式有了完整的了解。