私はMVVMアーキテクチャスイフトでUITableView
で作業しています。このために、私はサンプルテーブルビューを作成しました。Swiftを使用したMVVMを使用したUITableView
私が正しいかどうか、あるいは改善が必要かどうかをお聞かせください。
このアーキテクチャのクラスは次のとおりです。
のViewControllerは -
UITableView
とそのdelegate
とdatasource
メソッドが含まれています。class ViewController: UIViewController { let PRODUCT_CELL_IDENTIFIER = "ProductCellIdentifier" @IBOutlet weak var productTableView: UITableView! var productViewModel: ProductViewModel = ProductViewModel() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } //UITableView Delegate Methods extension ViewController { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return productViewModel.numberOfRowsInSection() } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: PRODUCT_CELL_IDENTIFIER) as! ProductTableViewCell let product = productViewModel.productsArray[indexPath.row] cell.productName.text = product.name cell.productQuantity.text = "\(product.quantity)" return cell } }
ProductViewModel: - これはViewModelにクラスです。
class ProductViewModel: NSObject { var productsArray = Array<Product>() override init() { let product1 = Product(name: "Prodcut1", image_url: "", quantity: 2) let product2 = Product(name: "Prodcut2", image_url: "", quantity: 3) productsArray.append(product1) productsArray.append(product2) } func numberOfRowsInSection() -> Int { return productsArray.count } }
製品 - これはProductTableViewCell
class Product: NSObject { var name: String var image_url: String var quantity: Int init(name: String, image_url: String, quantity: Int) { self.name = name self.image_url = image_url self.quantity = quantity } }
モデルクラスである - これは
class ProductTableViewCell: UITableViewCell { @IBOutlet weak var productQuantity: UILabel! @IBOutlet weak var productName: UILabel! @IBOutlet weak var productImageView: UIImageView! }
あなたが良いやっています! – jegadeesh
ありがとうございましたjegadeesh – Dhanunjaya