Skip to content

nick6969/MVVM

Repository files navigation

關於

這是一個 MVVM 的展示專案

ViewModel 使用 POP & OOP 建立

方便使用,並且減少大量重複的 Code

--

架構

Model

Just Model


ViewModel

持有 Models

var models: [Model]

有自己的狀態

var status: ViewModelStatus

負責取得資料(Web Api / Locale DB)

func loadData()
func loadDataMode()

負責通知 ViewController Loading 狀態

var loadingDelegate: ViewModelLoadingDelegate?
var loadingStatusDelegate: ViewModelLoadingStatusDelegate?

提供 Method 讓 ViewController 取用 Model

var datasCount: Int
func model(at index: Int) -> Model?
func isLastData(index: Int) -> Bool
func isLoadMore(index: Int) -> Bool

提供 Method 讓 ViewController 呼叫做事

func refreshData()
func nextStatus()

ViewController

持有 ViewModel

var viewModel: BaseViewModel

conform ViewModel 的 Delegate

extension ViewController: ViewModelLoadingDelegate

func loadingDone()
func loadingFail(_ error: Error?)

extension ViewController: ViewModelLoadingStatusDelegate

func showEmptyView(with: Error?)
func removeEmptyView()
func showLoading(_ bool: Bool)

請 ViewModel 做事

viewModel.nextStatus()
viewModel.refreshData()

Releases

No releases published

Packages

No packages published
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy