MVVM移动应用程序的最佳实践

时间:2015-07-29 08:22:11

标签: swift design-patterns mobile mvvm language-agnostic

我严重怀疑我们如何深入使用视图模型。

让我用一个例子来解释(在Swift中,但语言并不重要),简单的视图控制器,里面有一个表视图和相关的视图模型。

class FooViewController: UIViewController, UITableViewDelegate, UISearchBarDelegate {

     let viewModel = FooViewModel()

     @IBOutlet var tableView: UITableView!

     override func viewDidLoad() {
        super.viewDidLoad() 
        tableView.delegate = self
        tableView.dataSource = self
     }

    // MARK: - Table view delegates -

    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        return viewModel.heightForRow()
    }    
}

class FooViewModel {

    // MARK: - Table view management -

    func heightForRow() -> CGFloat {
        return 60.0
    }

}

委托给视图模型是否正确,例如,每个单元格的高度?
通常,可以委托查看模型UI"决定"在其方面?

1 个答案:

答案 0 :(得分:1)

我在视图模型中放置内容的一般规则是我是否会测试它们。由于我们不测试视图控制器,如果需要测试某些内容,请考虑将其放在视图模型中。如果计算行高,我会考虑将其放在视图模型中,以便进行测试。