Slide 1

Slide 1 text

MVC na iOS Tomáš Jukin @Inza

Slide 2

Slide 2 text

Únor 2013 - iOS

Slide 3

Slide 3 text

www.for-mobile.cz @forMobileCZ #forMobileCZ www.srazy.info/for-mobile Únor 2013 - iOS

Slide 4

Slide 4 text

www.juicymo.cz

Slide 5

Slide 5 text

www.iknow.eu/cvut/ imagination idea innovation

Slide 6

Slide 6 text

www.inovacentrum.cvut.cz/inovajet

Slide 7

Slide 7 text

www.facebook.com/dtvpraha7

Slide 8

Slide 8 text

Novinky Prostor pro vás ;)

Slide 9

Slide 9 text

MVC na iOS Tomáš Jukin @Inza

Slide 10

Slide 10 text

MVC na iOS MVC = Model-View-Controller ale v iOS... MVC = Massive ViewController

Slide 11

Slide 11 text

MVC na iOS nejčastěji v praxi: MVC = Asynchronní načítání dat z internetu do UITableView

Slide 12

Slide 12 text

MVC na iOS nejčastěji v praxi: MVC = Asynchronní načítání dat z internetu do UITableView

Slide 13

Slide 13 text

MVC na iOS nejčastěji v praxi: MVC = Asynchronní načítání dat z internetu do UITableView pomocí bloků

Slide 14

Slide 14 text

Byla jednou jedna tabulka... load data

Slide 15

Slide 15 text

Byla jednou jedna tabulka... array load data

Slide 16

Slide 16 text

Byla jednou jedna tabulka... array load data

Slide 17

Slide 17 text

Byla jednou jedna tabulka... array load data anim. update

Slide 18

Slide 18 text

Byla jednou jedna tabulka... array cache load data anim. update

Slide 19

Slide 19 text

Byla jednou jedna tabulka... array cache při update mažu cache... load data anim. update

Slide 20

Slide 20 text

Byla jednou jedna tabulka... controller switch array cache při update mažu cache... load data anim. update

Slide 21

Slide 21 text

Byla jednou jedna tabulka... controller switch load data anim. update array cache

Slide 22

Slide 22 text

Byla jednou jedna tabulka... controller switch array cache load data anim. update na pozadí

Slide 23

Slide 23 text

Byla jednou jedna tabulka... load data anim. update update cache load cache

Slide 24

Slide 24 text

Byla jednou jedna tabulka... load data anim. update V C M

Slide 25

Slide 25 text

Byla jednou jedna tabulka... load data anim. update V C M User Item ...

Slide 26

Slide 26 text

A co API?

Slide 27

Slide 27 text

A co API? programátor

Slide 28

Slide 28 text

A co API?

Slide 29

Slide 29 text

A co API? UITableView iOS API

Slide 30

Slide 30 text

A co API?

Slide 31

Slide 31 text

A co API? ???

Slide 32

Slide 32 text

A co API? MVC + c blocks

Slide 33

Slide 33 text

Jak na MC? view controller model owns load data

Slide 34

Slide 34 text

Jak na MC? view controller model owns load data app delegate refresh vylez z metra

Slide 35

Slide 35 text

Jak na MC? view controller model owns load data app delegate na pozadí

Slide 36

Slide 36 text

Jak na MC? view controller model owns load data iOS kill zpět

Slide 37

Slide 37 text

Jak na MC? view controller model owns load data iOS kill zpět ???

Slide 38

Slide 38 text

Jak na MC? view controller model owns load data app delegate kill zpět model manager proxy model

Slide 39

Slide 39 text

#pragma mark - Setup Models - (void)setupModelsConfiguration { DEFINE_BLOCK_SELF; self.modelConfigurationRecipe = ^(JMTableViewModel *model, NSString *modelIdentifier) { NSString *defaultModelIdentifier = [blockSelf modelIdentifier]; if ([modelIdentifier isEqualToString:defaultModelIdentifier]) { #pragma mark - Cell Recipe // Cell Configuration (how to pass data from cellModel to cell) model.cellConfigurationRecipe = ^(UITableViewCell *c, JMTableViewCellModel *cM, NSIndexPath *iP) { // ... }; #pragma mark - Preload recipe model.preloadRecipe = ^(NSMutableArray *cache) { /* ... */ }; #pragma mark - Load recipe model.loadRecipe = ^(NSMutableArray *cache, NSArray *loadedObjects) { /* ... */ }; if ([model isKindOfClass:[JMRESTTableViewModel class]]) { JMRESTTableViewModel *restModel = ((JMRESTTableViewModel *)model); __block JMRESTTableViewModel *blockRestModel = restModel; #pragma mark - Parse recipe restModel.parseRecipe = ^(NSMutableArray *cache, id parsedJSONDataObject) { // ... // ...and pass it to loadRecipe block blockRestModel.loadRecipe(cache, section); }; } } else { NSLog(@"Error: ..."); } }; }

Slide 40

Slide 40 text

Next

Slide 41

Slide 41 text

Next ? Onscreen vs. Offscreen rendering v iOS KVC, KVO a Cocoa Bindings Document Oriented Programing v Cocoa Advanced Cora Data