Передать тип из ViewModel для View
У Меня есть клас ViewModel. У меня есть два типа view которые я хочу использовать и присвоить. Каждый тип имеет свои свойстав. Например задний фон View.
class SomeViewModel{
enum ViewType: Int {
case oneViewType
case twoViewType
}
//Example
func getViewBackgroundColor() -> UIColor {
switch ViewType {
case .oneViewType:
return .black
case .twoViewType :
return .white
}
}
}
ViewController
class SomeViewController: UIViewController {
@IBOutlet weak var oneView:UIView!
@IBOutlet weak var twoView:UIView!
var viewModel:SomeViewModel!
override func viewDidLoad() {
super.viewDidLoad()
//set type from viewModel for view. Something like this
oneView.SomeViewModel.ViewType(type:oneViewType)
}
}
В класе SomeViewController я зделал два аутлета для View. И для каждой из этой view мне тужно передать тип из ViewModel. Как я это могу реализовать?
Ответы (1 шт):
Автор решения: schmidt9
→ Ссылка
Во-первых исправление
class SomeViewModel {
enum ViewType: Int {
case oneViewType
case twoViewType
}
//Example
func getViewBackgroundColor(with viewType: ViewType) -> UIColor {
switch viewType {
case .oneViewType:
return .black
case .twoViewType :
return .white
}
}
}
Во-вторых, по существу вопроса - создаем подкласс, объявляем нужное свойство и используем его
class SomeView : UIView {
var viewType: SomeViewModel.ViewType?
}
во вью контроллере
@IBOutlet weak var oneView: SomeView!
// ...
oneView.viewType = .oneViewType