大佬教程收集整理的这篇文章主要介绍了Swift MVVM 设计模式,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 MVVM 项目。我正在 viewmodel 中获取 JsON 数据。我怎样才能重新加载
import UIKit
final class UsersListScreenVIEw: UIVIEw {
lazy var userListtable = UItableVIEw()
init() {
super.init(frame: .zero)
addSubvIEws()
setUpConsTraints()
setUpVIEws()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func addSubvIEws() {
[userListtable]
.forEach {
addSubvIEw($0)
$0.translatesautoresizingMaskIntoConsTraints = false
}
}
private func setUpConsTraints() {
NSLayoutConsTraint.activate([
userListtable.centerXAnchor.consTraint(equalTo: self.centerXAnchor),userListtable.centerYAnchor.consTraint(equalTo: self.centerYAnchor),userListtable.leadingAnchor.consTraint(equalTo: self.leadingAnchor,constant: 36.0),userListtable.TrailingAnchor.consTraint(equalTo: self.TrailingAnchor,constant: -36.0),userListtable.heightAnchor.consTraint(equalTo: self.heightAnchor,multiplIEr: 1)
])
}
private func setUpVIEws() {
BACkgroundcolor = UIcolor.white
}
}
final class UsersListScreenviewmodel {
var userList = [UsersList]()
weak var vc: UsersListScreenVIEwController?
let urlToFetchData = "https://Jsonplaceholder.typicode.com/users"
func getUsersList() {
URLSession.shared.dataTask(with: URL(String: urlToFetchData)!) { (data,response,error) in
if error == nil {
if let data = data {
do {
let userResponse = try JsONDecoder().decode([UsersList].self,from: data)
self.userList.append(contentsOf: userResponsE)
dispatchQueue.main.async {
userListtable.reloadData()
}
}catch let err {
print(err.localizedDescription)
}
}
} else {
print(error?.localizedDescription as Any)
}
}.resume()
}
如何从 viewmodel.swift 文件中调用 userListtable.reloaddata。
如何从 ViewModel.swift 文件中调用 userListTable.reloaddata
你没有。这将违反权力分立。通常,视图模型发送一个订阅视图的信号;因此,视图听到新数据已准备就绪并获取它并重新加载表。
,您可能希望在视图生命周期事件 onAppear
(SwiftUI) 响应中向视图模型(也称为操作或意图)发送“onAppear”事件。 viewDidAppear
(UIKit) 到视图模型以支持视图模型做出明智的操作。基于内部维护的状态,视图模型然后可以开始加载或更新数据,或激活订阅以收听数据更新。同时,视图独立观察视图模型生成的状态变化。这些代表了视图应该如何呈现自身的单一来源。
使用从视图发送的“onAppear”事件(或类似的生命周期事件)是可选的。例如,视图模型可以在创建时独立开始加载数据。视图开始观察视图模型(更准确地说,视图模型的视图状态)可能就足够了。
因此,您需要的是一个公开可观察视图状态的视图模型,以及一个观察它的视图或视图控制器。一旦视图状态发生变化,您就可以在您的视图(视图控制器)中调用一个处理程序。 UIKit 的具体实现可能会将视图状态映射到符合 UITableView 的数据源,并根据新旧数据的差异更新表视图。
您的视图模型还公开了一个 API,您可以在其中将“事件”(也称为操作、意图)从视图发送到上述视图模型,或处理用户对 UI 控件的操作。
请注意,视图状态是不可变的。
以上是大佬教程为你收集整理的Swift MVVM 设计模式全部内容,希望文章能够帮你解决Swift MVVM 设计模式所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。