├── MVVMByClosure ├── MVVMByClosure.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── chai.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ │ └── chai.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ ├── MVVMByClosure.xcscheme │ │ └── xcschememanagement.plist ├── MVVMByClosure │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ ├── Contents.json │ │ └── dead.imageset │ │ │ ├── Contents.json │ │ │ └── dead.png │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── CellModel.swift │ ├── CellViewModel.swift │ ├── CustomCell.swift │ ├── HeadModel.swift │ ├── HeadView.swift │ ├── HeadViewModel.swift │ ├── Info.plist │ ├── Model.swift │ ├── Observable.swift │ ├── ViewController.swift │ ├── ViewModel.swift │ └── dead.png ├── MVVMByClosureTests │ ├── Info.plist │ └── MVVMByClosureTests.swift └── MVVMByClosureUITests │ ├── Info.plist │ └── MVVMByClosureUITests.swift ├── MVVMByProtocol ├── MVVMByProtocol.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── chai.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ │ └── chai.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ ├── MVVMByProtocol.xcscheme │ │ └── xcschememanagement.plist ├── MVVMByProtocol │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── CellModel.swift │ ├── CellViewModel.swift │ ├── CustomCell.swift │ ├── CustomPresentable.swift │ ├── HeadModel.swift │ ├── HeadView.swift │ ├── HeadViewModel.swift │ ├── Info.plist │ ├── Model.swift │ ├── ViewController.swift │ ├── ViewModel.swift │ └── dead.png ├── MVVMByProtocolTests │ ├── Info.plist │ └── MVVMByProtocolTests.swift └── MVVMByProtocolUITests │ ├── Info.plist │ └── MVVMByProtocolUITests.swift └── README.md /MVVMByClosure/MVVMByClosure.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure.xcodeproj/project.xcworkspace/xcuserdata/chai.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure.xcodeproj/project.xcworkspace/xcuserdata/chai.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure.xcodeproj/xcuserdata/chai.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure.xcodeproj/xcuserdata/chai.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure.xcodeproj/xcuserdata/chai.xcuserdatad/xcschemes/MVVMByClosure.xcscheme: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure.xcodeproj/xcuserdata/chai.xcuserdatad/xcschemes/MVVMByClosure.xcscheme -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure.xcodeproj/xcuserdata/chai.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure.xcodeproj/xcuserdata/chai.xcuserdatad/xcschemes/xcschememanagement.plist -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/AppDelegate.swift -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/Assets.xcassets/dead.imageset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/Assets.xcassets/dead.imageset/Contents.json -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/Assets.xcassets/dead.imageset/dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/Assets.xcassets/dead.imageset/dead.png -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/Base.lproj/Main.storyboard -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/CellModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/CellModel.swift -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/CellViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/CellViewModel.swift -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/CustomCell.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/CustomCell.swift -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/HeadModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/HeadModel.swift -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/HeadView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/HeadView.swift -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/HeadViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/HeadViewModel.swift -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/Info.plist -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/Model.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/Model.swift -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/Observable.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/Observable.swift -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/ViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/ViewController.swift -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/ViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/ViewModel.swift -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosure/dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosure/dead.png -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosureTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosureTests/Info.plist -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosureTests/MVVMByClosureTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosureTests/MVVMByClosureTests.swift -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosureUITests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosureUITests/Info.plist -------------------------------------------------------------------------------- /MVVMByClosure/MVVMByClosureUITests/MVVMByClosureUITests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByClosure/MVVMByClosureUITests/MVVMByClosureUITests.swift -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol.xcodeproj/project.xcworkspace/contents.xcworkspacedata -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol.xcodeproj/project.xcworkspace/xcuserdata/chai.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol.xcodeproj/project.xcworkspace/xcuserdata/chai.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol.xcodeproj/xcuserdata/chai.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol.xcodeproj/xcuserdata/chai.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol.xcodeproj/xcuserdata/chai.xcuserdatad/xcschemes/MVVMByProtocol.xcscheme: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol.xcodeproj/xcuserdata/chai.xcuserdatad/xcschemes/MVVMByProtocol.xcscheme -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol.xcodeproj/xcuserdata/chai.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol.xcodeproj/xcuserdata/chai.xcuserdatad/xcschemes/xcschememanagement.plist -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/AppDelegate.swift -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/Base.lproj/Main.storyboard -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/CellModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/CellModel.swift -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/CellViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/CellViewModel.swift -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/CustomCell.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/CustomCell.swift -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/CustomPresentable.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/CustomPresentable.swift -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/HeadModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/HeadModel.swift -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/HeadView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/HeadView.swift -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/HeadViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/HeadViewModel.swift -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/Info.plist -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/Model.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/Model.swift -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/ViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/ViewController.swift -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/ViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/ViewModel.swift -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocol/dead.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocol/dead.png -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocolTests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocolTests/Info.plist -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocolTests/MVVMByProtocolTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocolTests/MVVMByProtocolTests.swift -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocolUITests/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocolUITests/Info.plist -------------------------------------------------------------------------------- /MVVMByProtocol/MVVMByProtocolUITests/MVVMByProtocolUITests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/MVVMByProtocol/MVVMByProtocolUITests/MVVMByProtocolUITests.swift -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chaiyanpu/SwiftMVVMDemo/HEAD/README.md --------------------------------------------------------------------------------