a little respect for mvc part 1 par gegoire lhotellier

69
@greg3z A little respect for MVC

Upload: cocoaheads-france

Post on 06-Jan-2017

3.690 views

Category:

Software


1 download

TRANSCRIPT

@greg3z

A little respect for MVC

@greg3z

MVC

@greg3z

Moche Vieux Con

@greg3z

Moche Vieux ConUgly Old Stupid

@greg3z

UIKit

@greg3z

M V C

@greg3z

PONSO

@greg3z

@greg3z

PONSOPlain Old NSObject

@greg3z

POSS

@greg3z

@greg3z

POSSPlain Old Swift Structure

@greg3z

POSS

M V C

@greg3z

POSS UIView

M V C

@greg3z

POSS UIView UIController

M V C

@greg3z

POSS UIView UIViewController

M V C

@greg3z

UIViewController

@greg3z

UIViewController

@greg3z

UIViewController

@greg3z

UIViewController

@greg3z

UIViewConTROLLer

@greg3z

UIViewCon er

@greg3z

@greg3z

addChildViewController

@greg3z

addChildViewController(controller)

@greg3z

addChildViewController(controller) controller.view.frame = view.bounds view.addSubview(controller.view)

@greg3z

addChildViewController

@greg3z

UIViewCon er

@greg3z

UIViewCon er

@greg3z

UIViewController

UIViewController

UIViewController

UIViewController

UIViewController

UIViewController

UIViewController

UIViewController

UIViewControllerUIViewController

UIViewController

@greg3z

UIViewController

UIViewController

UIViewController

UIViewControllerUIViewController

UIViewControllerUIViewController

UIViewController

UIViewController

UIViewController

UIViewController

@greg3z

UIViewController

UIViewController

UIViewController

UIViewControllerUIViewController

UIViewControllerUIViewController

UIViewController

UIViewController

UIViewController

UIViewController

@greg3z

UIViewController

UIViewController

UIViewController

UIViewControllerUIViewController

UIViewControllerUIViewController

UIViewController

UIViewController

UIViewController

UIViewController

@greg3z

var labelText: String var textFieldText: String

var textFieldChanged: (String -> Void)?

Content viewController

@greg3z

var image: UIImage var buttonTitle: String

var buttonTouched: (Void -> Void)?

Content viewController

@greg3z

var labelText: String var textFieldText: String var image: UIImage var buttonTitle: String

var textFieldChanged:(String -> Void)? var buttonTouched: (Void -> Void)?

Container viewController

@greg3z

var labelText: String var textFieldText: String var image: UIImage var buttonTitle: String

var textFieldChanged:(String -> Void)? var buttonTouched: (Void -> Void)?

Content viewController

@greg3z

Data

User inputs

@greg3z

ViewData

User inputs

@greg3z

POSS UIView UIViewController

M V C

@greg3z

POSS UIView UIViewController UIViewController

M V C

@greg3z

POSS UIView UIViewController UIViewController

M V C

@greg3z

POSSUIView

UIViewController (generic)

UIViewController (specific)

M V C

@greg3z

var labelText: String var textFieldText: String var image: UIImage var buttonTitle: String

var textFieldChanged:(String -> Void)? var buttonTouched: (Void -> Void)?

Generic viewController

@greg3z

var user: User

var userUpdated: (User -> Void)?

Specific viewController

@greg3z

var user: User

var userUpdated: (User -> Void)?

struct User { let name: String let picture: UIImage }

Specific viewController

@greg3z

Specific / Generic

@greg3z

Specific ⨁ Generic

@greg3z

Controller / View

@greg3z

Controller View

@greg3z

UIViewController UIViewController

@greg3z

UIViewController UIViewController

@greg3z

@greg3z

@greg3z

UIViewController UIViewController UIViewController UIViewController

UIViewController UIViewController

@greg3z

UIViewController UIViewController UIViewController UIViewController

UIViewController UIViewController

@greg3z

UIViewController UIViewController UIViewController UIViewController

UIViewController UIViewController

@greg3z

• get rid of massive view controllers

• gain reusable views

• write beautiful code

• lighten our project

@greg3z

What about Swift?

@greg3z

Swift 1.0

@greg3z

Swift 2.0

@greg3z

Swift 3.0

@greg3z

protocols

@greg3z

protocolsWhere do

I put

them?!😑☹

@greg3z

Swift

@greg3z

Swift

Horizontal Power

@greg3z

Model - Controller - View

Reading

Writing

@greg3z

Conclusion

• addChildViewController

• generic / specific

• horizontal pattern?

• MVC rocks

@greg3z