【发布时间】:2018-09-14 19:15:42
【问题描述】:
我需要在 UIView 中显示数据。我创建了一个类名:- MYView-UIView
import UIKit
class MYView: UIView {
@IBOutlet weak var name: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
func setlisttabData(chefs:listModel)
{
self.name.text = chefs.name
}
}
我的视图控制器为:-
import UIKit
class listViewController: UIViewController {
// @IBOutlet private weak var tableView: UITableView!
@IBOutlet var chef: MYView!
private var listViewModel :ListViewModel!
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?, withViewModel viewModel:ListViewModel) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
listViewModel = viewModel
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func viewDidLoad() {
super.viewDidLoad()
}
}
在此我没有使用主情节提要。
所以对于listViewController 我有.xib
在 xib 中,我在其中放置了滚动视图和一个视图。在视图中,我将类名命名为 MYView。然后我在里面放了一个标签。并给出连接。
现在我需要显示名称。如何操作。
我在 UIView 中给出了一个函数:
func setlisttabData(chefs:listModel){
self.name.text = chefs.name
}
模型类:- 导入 UIKit
class listModel: NSObject {
var name:String!
init?(dictionary :JSONDictionary) {
guard let name = dictionary["name"] as? String else {
return
}
self.name = name
}
}
my listviewmodel:-
class listviewmodel: NSObject {
var datasourceModel:listDataModel
init(withdatasource newDatasourceModel: listDataModel) {
datasourceModel = newDatasourceModel
}
func datafordisplay(atindex indexPath: IndexPath) -> listModel{
return datasourceModel.dataListArray![indexPath.row]
}
func numberOfRowsInSection(section:Int) -> Int {
return (datasourceModel.dataListArray?.count)!
}
}
和listdatasourcemodel:-
class listDataModel: NSObject {
var dataListArray:Array<listModel>? = []
init(array :Array<[String:Any]>?) {
super.init()
var newArray:Array<[String:Any]> = []
if array == nil{
newArray = self.getJsonDataStored3()
}
else{
newArray = array!
}
var datalist:Array<listModel> = []
for dict in newArray{
let model = listModel(dictionary: dict)
datalist.append(model!)
}
self.dataListArray = datalist
}
}
typealias dummyDataSource3 = listDataModel
extension dummyDataSource3{
func getJsonDataStored3() ->Array<Dictionary<String,String>>{
let jsonArray = [["name":"Anjapar"] as Array<Dictionary<String,String>>
return jsonArray
}
}
我得到了模型中的值。但我认为下面这个函数需要改变一些东西。
func datafordisplay(atindex indexPath: IndexPath) -> listModel{
return datasourceModel.dataListArray![indexPath.row]
}
我需要从该 jsondictionary 中获取名称。
那么,如何在 ViewController 中调用。这是在 mvvm 方法中完成的。
【问题讨论】:
-
错误是什么?
-
@PPL 我没有得到名称。如何在视图控制器中调用函数 setlisttabData
-
你得到厨师 IBOutlet 了吗?请检查名称不为零
-
@PPL 我已经更新了我的代码。请检查。我已经在 MYView 类中给出了 func setlistData
-
您是从 datafordisplay 获取 listmodel 吗?或者在这个方法中,setlisttabData,检查 listmodel 的名字不是 nil