Slide 1

Slide 1 text

Responder ChainΛ࢖ͬͯ ίʔυΛεοΩϦ͍ͤͨ͞ HAKATA.swift @ukitaka

Slide 2

Slide 2 text

twitter: @ukitaka_ github: @ukitaka Yuki Takahashi

Slide 3

Slide 3 text

ࣗݾ঺հ ❤ ؔ਺ܕϓϩάϥϛϯάɺDDD ✏ ܕγεςϜɺίϯύΠϥ ௿ϨΠϠʔ

Slide 4

Slide 4 text

ࠓ೔ͷ࿩

Slide 5

Slide 5 text

͍͖ͳΓͰ͕͢ɺ ͜ΜͳέʔεΛߟ͑ͯΈΔ

Slide 6

Slide 6 text

Cellͷதͷ ϘλϯΛλοϓͨ͠Β Alert / ActionSheetग़͍ͨ͠

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

͋Γ͕ͪ

Slide 9

Slide 9 text

஍ຯʹΊΜͲ͍͘͞ • UIAlertControllerΛग़͢ʹ͸ViewControllerͰ ॲཧΛ͢Δඞཁ͕͋Δ • Cell͸ViewControllerͳΜͯ஌Βͳ͍ • ViewController΋CellͷϘλϯΛ(ී௨͸)௚઀ࢀ র͍ͯ͠ͳ͍

Slide 10

Slide 10 text

Α͋͘Δରॲ๏ • DelegateΛҾճ͢ • ֊૚͕ਂ͘ͳΕ͹ͳΔ΄Ͳਏ͍ • Viewߏ଄ͷมԽʹऑ͍

Slide 11

Slide 11 text

ͳΜͱ͔͍ͨ͠

Slide 12

Slide 12 text

ݪ఺ʹཱͪฦͬͯMVC

Slide 13

Slide 13 text

MVCͰ͸Ͳ͏͋Δ΂͖ʁ

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

ϢʔβΞΫγϣϯͷॲཧ • MVCʹ͓͚ΔControllerͷΑ͏ͳΦϒδΣΫ τʹ௨஌Λͯ͠ϢʔβΞΫγϣϯड͚ͱΔͷ ͕ී௨ • MVCʹݶΒͣɺͲͷΞʔΩςΫνϟͰ͋ͬͯ ΋ಉ͡

Slide 17

Slide 17 text

௨஌Λ͠Α͏

Slide 18

Slide 18 text

ཧ૝

Slide 19

Slide 19 text

௨஌͢ΔଆΠϝʔδ .notifyΛݺͿ͚ͩ

Slide 20

Slide 20 text

௨஌Λड͚औΔଆΠϝʔδ ͍͍ײ͡ʹDelegateͰड͚औΕΔ

Slide 21

Slide 21 text

DelegateΛҾճ͢ඞཁ͕ͳ͍ DelegateύλʔϯͷΑ͏ͳ Πϝʔδ

Slide 22

Slide 22 text

ͦ͜Ͱ Responder Chain

Slide 23

Slide 23 text

= UIResponderͷ࿈ͳΓ

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

UIResponder • UIReponder = ϢʔβͷೖྗΛर͑Δ΍ͭ • ͋ΔsubviewͰΠϕϯτΛर͏ͱॲཧͰ͖Δͱ ͜Ζ·Ͱ࣍ʑʹॲཧΛճ͍ͯ͘͠ • self.next Ͱ࣍ͷResponder͕औΕΔ = Responder Chain

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

UIResponder • ResponderChain্ʹ͸౰વViewController΋ ͍Δʂ • DelegateΛҾ͖ճ͢·Ͱ΋ͳ͘ɺ͢Ͱʹͭͳ ͕͍ͬͯΔ • ͜Εʹ৐͔ͬΕ͹͍͍ײ͡ʹViewControllerʹ ʮ௨஌ʯͰ͖ͦ͏ʂ

Slide 28

Slide 28 text

ͳΜ͔࢖͑ͦ͏

Slide 29

Slide 29 text

Ͳ͏΍Δ͔ʁ

Slide 30

Slide 30 text

ActionΛఆٛ͢Δ

Slide 31

Slide 31 text

DelegateΛఆٛ͢Δ

Slide 32

Slide 32 text

ViewEventΛఆٛ͢Δ ୭͕ϋϯυϧ͢Δ͔ͱɺ Ͳ͏σΟεύον͢Δ͔ΛܾΊΔɻ

Slide 33

Slide 33 text

ViewEventΛఆٛ͢Δ

Slide 34

Slide 34 text

UIResponderΛ֦ு͢Δ Responder ChainΛḷͬͯɺ ΠϕϯτΛϋϯυϧͰ͖Δ΍ͭΛݟ͚ͭΔ

Slide 35

Slide 35 text

׬੒ʂ

Slide 36

Slide 36 text

௨஌͢ΔଆΠϝʔδ .notifyΛݺͿ͚ͩ

Slide 37

Slide 37 text

௨஌Λड͚औΔଆΠϝʔδ ͍͍ײ͡ʹDelegateͰड͚औΕΔ

Slide 38

Slide 38 text

ཧ૝ͷੈք͕࣮ݱͨ͠

Slide 39

Slide 39 text

ྑ͍఺ • DelegateΛViewͷਂ͍֊૚·ͰҾճ͢ඞཁ͕ ͳ͘ͳͬͨ • Viewͷ֊૚͕มԽͨ͠ͱͯ͠΋ɺίʔυͷม ߋ͕ෆཁɻViewͷมߋʹڧ͍ɻ

Slide 40

Slide 40 text

มΘΒͳ͍఺ • ͋ΔΠϕϯτΛड͚औΔͨΊͷprotocol࣮૷ ͠๨ΕΛίϯύΠϧ࣌ʹ͸ݕग़Ͱ͖ͳ͍ • ͜Ε͸Delegateઃఆ͠๨ΕͰ΋ಉ͡ • ࣮ࡍʹಈ͔͢ or ςετͰΧόʔ

Slide 41

Slide 41 text

RxCocoa΁ͷԠ༻

Slide 42

Slide 42 text

RxCocoa + Responder Chain • RxΛ࢖͍ͬͯͯ΋ಉ͡໰୊͕ى͜Δ • RxDataSourcesΛ࢖͍ͬͯͯ΋ɺCellͷதͷΠ ϕϯτ͸र͑ͳ͍ • Responder Chainʹྲྀͯ͠͠·͓͏

Slide 43

Slide 43 text

ukitaka/RxResponderChain

Slide 44

Slide 44 text

࢖͍ํ

Slide 45

Slide 45 text

ࡶʹResponder Chainʹྲྀ͢ Ϙλϯ͕λοϓ͞ΕͨΒ

Slide 46

Slide 46 text

ࡶʹResponder Chainʹྲྀ͢ ద੾ͳܕʹม׵ͯ͠

Slide 47

Slide 47 text

ࡶʹResponder Chainʹྲྀ͢ Responder Chainʹྲྀ͢

Slide 48

Slide 48 text

ࡶʹVCͰड͚औΔ ViewControllerͰ ܕΛࢦఆͯ͠ड͚औΔ

Slide 49

Slide 49 text

গ͚࣮ͩ͠૷ΛΈΔ

Slide 50

Slide 50 text

࣮૷ͷཪଆ ࠇຐज़ʹΑ֤ͬͯUIResponderΦϒδΣΫτʹ PublishSubjectΛ࣋ͨͤΔ

Slide 51

Slide 51 text

࣮૷ͷཪଆ self.rx.responderChain Λੜ΍͢

Slide 52

Slide 52 text

࣮૷ͷཪଆ ͜ͷΦϒδΣΫτ͸ObserverType

Slide 53

Slide 53 text

࣮૷ͷཪଆ ઒ʹEvent͕ྲྀΕ͖ͯͨΒ ResponderChainΛḷͬͯ

Slide 54

Slide 54 text

࣮૷ͷཪଆ ͖ͬ͞ੜ΍ͨ͠PublishSubjectʹ ΠϕϯτΛྲྀ͢

Slide 55

Slide 55 text

࣮૷ͷཪଆ ड͚औΔͱ͖͸ܕͰfilter

Slide 56

Slide 56 text

·ͱΊ

Slide 57

Slide 57 text

ResponderChain • View → ViewController͸Responder Chainܨ ͕͍ͬͯΔ • ௨஌ʹ࢖͑Δ / ָʹॻ͚Δ / มߋʹڧ͍

Slide 58

Slide 58 text

͓ΘΓ