我创建了一个视图以供重用。我的计划是:在ViewController上显示相同的内容,具体取决于类型。 在视图上,您需要更改Label和背景。数据来自服务器,为此,我创建了ViewModel。根据类型,我返回Label的内容和背景颜色。
ViewModel.swift
class SomeViewModel{
enum ViewType: Int {
case oneViewType
case twoViewType
}
//Example
func getViewBackgroundColor() -> UIColor {
switch ViewType {
case .oneViewType:
return .black
case .twoViewType :
return .white
}
}
}
ViewControllerViewModel.swift
class ViewControllerViewModel{
var viewType: ViewType? = nil
func getViewType(type: viewType) {
switch type {
case .oneViewType:
return
case .twoViewType:
return
}
}
ViewController.swift
class SomeViewController: UIViewController {
@IBOutlet weak var oneView:UIView!
@IBOutlet weak var twoView:UIView!
var viewModel: SomeViewModel!
override func viewDidLoad() {
super.viewDidLoad()
}
func configure(viewModel: ViewControllerViewModel) {
self.viewModel = viewModel
//ERROR : Cannot assign value of type '()' to type 'UIView?'
oneView = self.SomeViewModel.getViewType(type: .oneViewType)
}
}
错误:无法将类型'()'的值分配为类型'UIView?'
答案 0 :(得分:1)
更正代码正常工作后,我不知道您在做什么。看起来应该像这样:
enum ViewType: Int {
case oneViewType
case twoViewType
func getViewBackgroundColor() -> UIColor {
switch self {
case ViewType.oneViewType:
return .black
case ViewType.twoViewType :
return .white
}
}
}
class SomeViewModel{
var type : ViewType
init(type : ViewType) {
self.type = type
}
}
class ViewControllerViewModel{
var viewType: ViewType? = nil
func getViewType(type: ViewType) {
switch type {
case .oneViewType:
return
case .twoViewType:
return
}
}
}
class WalletsViewModel : SomeViewModel {
}
但是我仍然不知道您要分配什么来返回一个Int值viewOne : UIView = getType(ViewType)