Slide 1

Slide 1 text

ϓϩτίϧͰ 4UPSZCPBSEͱ΋ͬͱ஥ྑ͘ͳΔ !J04%$ 5XJUUFS2JJUB!@LJ (JU)VC,*

Slide 2

Slide 2 text

w ΤϯδχΞྺ೥໨
 +BWB1)1,PUMJO4XJGUFUDʜ w J04ྺ೥͘Β͍ 4UPSZCPBSEѪ޷ऀ w J3JEHF *OD d w େखاۀͷެࣜΞϓϦडୗ։ൃ͕ϝΠϯ TFMGEFTDSJQUJPO

Slide 3

Slide 3 text

5ZQJDBMTUPSZXJUI 4UPSZCPBSE w JEFOUJpFSͷUZQP w TFHVFͱ͔WDͱ͔DFMMͱ͔ʜ w QSFQBSF'PS4FHVFͷංେԽ w มߋʹऑ͍

Slide 4

Slide 4 text

typo͸R.swiftͰ ͳΜͱ͔Ͱ͖Δ

Slide 5

Slide 5 text

QSFQBSF'PS4FHVFͷ ංେԽ໰୊

Slide 6

Slide 6 text

ݱঢ়ͷ4UPSZCPBSEͷੑ্࣭
 ׬શͳղܾ͸ແཧ

Slide 7

Slide 7 text

4UPSZCPBSE4FHVF ͸࢖͍ͮΒ͍࢖Θͳ͍

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

4UPSZCPBSEͷຊ࣭͸ ը໘ભҠΛ ίʔυ͔Β੾Γ཭͢͜ͱ

Slide 11

Slide 11 text

΋ͪΖΜ ׬શʹ੾Γ཭͢͜ͱ͸Ͱ͖ͳ͍ ओʹը໘ؒͰͷ஋ͷड͚౉͠

Slide 12

Slide 12 text

ͦͷͨΊͷ 4UPSZCPBSE4FHVF

Slide 13

Slide 13 text

4UPSZCPBSEͱ஥ྑ͘ͳΔ 㲈 4FHVFͱ஥ྑ͘ͳΔ

Slide 14

Slide 14 text

QSFQBSF'PS4FHVFͷ ංେԽ໰୊

Slide 15

Slide 15 text

1SPUPDPMΛ࢖͑͹ ܰݮͰ͖ΔͷͰ͸ʁ

Slide 16

Slide 16 text

&YBNQMF

Slide 17

Slide 17 text

4JNQMF4UPSZCPBSE 'JSTU 7JFX$POUSPMMFS 4FDPOE 7JFX$POUSPMMFS .FTTBHF .FTTBHF

Slide 18

Slide 18 text

-FHBDZ1BUUFSOPG QSFQBSF'PS4FHVF - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"second"]) { SecondViewController *vc = segue.destinationViewController; vc.message = self.message; } } 0CKFDUJWF$ override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "second" { let second = segue.destination as! SecondViewController second.message = message } } 4XJGU

Slide 19

Slide 19 text

-FHBDZ1BUUFSOPG QSFQBSF'PS4FHVF - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"second"]) { SecondViewController *vc = segue.destinationViewController; vc.message = self.message; } } 0CKFDUJWF$ override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "second" { let second = segue.destination as! SecondViewController second.message = message } } 4XJGU ͜͜ͷUZQP͕ʜ

Slide 20

Slide 20 text

-FHBDZ1BUUFSOPG QSFQBSF'PS4FHVF - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { if ([segue.identifier isEqualToString:@"second"]) { SecondViewController *vc = segue.destinationViewController; vc.message = self.message; } } 0CKFDUJWF$ override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if segue.identifier == "second" { let second = segue.destination as! SecondViewController second.message = message } } 4XJGU 'PSDF$BTUJOHʜ

Slide 21

Slide 21 text

6TJOHEFTUJOBUJPO override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let second = segue.destination as? SecondViewController { second.message = message } } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { switch segue.destination { case let second as SecondViewController: second.message = message default: break } } *GMFU TXJUDIMFU

Slide 22

Slide 22 text

6TJOHEFTUJOBUJPO override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let second = segue.destination as? SecondViewController { second.message = message } } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { switch segue.destination { case let second as SecondViewController: second.message = message default: break } } *GMFU TXJUDIMFU UZQFTBGFDBTUͰΫϥογϡճආ

Slide 23

Slide 23 text

6TJOHEFTUJOBUJPO override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let second = segue.destination as? SecondViewController { second.message = message } } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { switch segue.destination { case let second as SecondViewController: second.message = message default: break } } *GMFU TXJUDIMFU *EFOUJpFSͷUZQP໰୊΋ղܾ

Slide 24

Slide 24 text

ίʔυͰݺͿඞཁ͕ແ͍ͳΒ 
 4UPSZCPBSEଆͰ΋*EFOUJpFS Λઃఆ͢Δඞཁ͕ແ͘ͳΔʂ

Slide 25

Slide 25 text

.VMUJQMF%FTUJOBUJPO 'JSTU 7JFX$POUSPMMFS 4FDPOE 7JFX$POUSPMMFS 5IJSE 7JFX$POUSPMMFS .FTTBHF .FTTBHF .FTTBHF

Slide 26

Slide 26 text

.VMUJQMF%FTUJOBUJPO class SecondViewController: UIViewController { var message: Message = Message(value: "") } class ThirdViewController: UIViewController { var message: Message = Message(value: "") }

Slide 27

Slide 27 text

.VMUJQMF%FTUJOBUJPO override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let second = segue.destination as? SecondViewController { second.message = message } if let third = segue.destination as? ThirdViewController { third.message = message } }

Slide 28

Slide 28 text

.VMUJQMF%FTUJOBUJPO override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let second = segue.destination as? SecondViewController { second.message = message } if let third = segue.destination as? ThirdViewController { third.message = message } } ಉ͡ϓϩύςΟΛ࣋ͭผͷ 7JFX$POUSPMMFS͕૿͑Δ౓ʹܕ νΣοΫͷίʔυ͕૿͑Δʜ

Slide 29

Slide 29 text

ͦ΋ͦ΋

Slide 30

Slide 30 text

4UPSZCPBSEͷຊ࣭͸ ը໘ભҠΛ ίʔυ͔Β੾Γ཭͢͜ͱ

Slide 31

Slide 31 text

ͳͷʹ

Slide 32

Slide 32 text

QSFQBSF'PS4FHVFͷॲཧ͕ ˓˓7JFX$POUSPMMFSʹ ґଘ͍ͯ͠ΔͬͯͲ͏ͳͷΑ

Slide 33

Slide 33 text

4FHVFXFBLUPDIBOHF 7$ 4FHVF EFTU

Slide 34

Slide 34 text

4FHVFXFBLUPDIBOHF 7$ 4FHVF EFTU EFTUʹભҠ͢ΔͰ

Slide 35

Slide 35 text

4FHVFXFBLUPDIBOHF 7$ 4FHVF EFTU EFTUͷΫϥεʹ߹Θͤͯ ϓϩύςΟηοτ͢ΔͰ EFTUʹભҠ͢ΔͰ

Slide 36

Slide 36 text

4FHVFXFBLUPDIBOHF 7$ 4FHVF EFTU ϑΝοʂʁ ભҠઌมΘͬͨͰ EFTU

Slide 37

Slide 37 text

4FHVFTUSPOHUPDIBOHF 7$ 4FHVF EFTU QSPUPDPM

Slide 38

Slide 38 text

4FHVFTUSPOHUPDIBOHF 7$ 4FHVF EFTUʹભҠ͢ΔͰ EFTU QSPUPDPM

Slide 39

Slide 39 text

4FHVFTUSPOHUPDIBOHF 7$ 4FHVF QSPUPDPMʹ߹Θͤͯ ϓϩύςΟηοτ͢ΔͰ EFTUʹભҠ͢ΔͰ EFTU QSPUPDPM

Slide 40

Slide 40 text

4FHVFTUSPOHUPDIBOHF 7$ 4FHVF ಉ͡QSPUPDPM͔ͩΒ ॲཧม͑΁ΜͰ ભҠઌมΘͬͨͰ EFTU QSPUPDPM EFTU

Slide 41

Slide 41 text

EFTUJOBUJPOΛ QSPUPDPMͰந৅Խ͢Ε͹ มߋʹڧ͘ͳΔ Т

Slide 42

Slide 42 text

1SPUPDPMJ[FQSPQFSUZ 'JSTU 7JFX$POUSPMMFS 4FDPOE 7JFX$POUSPMMFS 5IJSE 7JFX$POUSPMMFS .FTTBHF .FTTBHF .FTTBHF

Slide 43

Slide 43 text

1SPUPDPMJ[FQSPQFSUZ 'JSTU 7JFX$POUSPMMFS 4FDPOE 7JFX$POUSPMMFS 5IJSE 7JFX$POUSPMMFS .FTTBHF .FTTBHF .FTTBHF .FTTBHF 7JFX .FTTBHF

Slide 44

Slide 44 text

.FTTBHF7JFX1SPUPDPM protocol MessageView: class { var message: Message { get set } } class SecondViewController: UIViewController, MessageView { var message: Message = Message(value: "") } class ThirdViewController: UIViewController, MessageView { var message: Message = Message(value: "") }

Slide 45

Slide 45 text

1SPUPDPM0SJFOUFE4FHVF override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let messageView = segue.destination as? MessageView { messageView.message = message } }

Slide 46

Slide 46 text

1SPUPDPM0SJFOUFE4FHVF override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let messageView = segue.destination as? MessageView { messageView.message = message } } 1SPUPDPMͰUZQFTBGFDBTU

Slide 47

Slide 47 text

1SPUPDPM0SJFOUFE4FHVF w ભҠઌͷΫϥεʹґଘ͠ͳ͍
 㲈มߋʹڧ͍QSFQBSF'PS4FHVF͕ॻ͚Δʂ w 1SPUPDPM୯ҐͰ؅ཧ͢Ε͹ྑ͍ͷͰංେԽ΋ܰݮʂ w *EFOUJpFSΛ࢖Θͳ͍ͷͰUZQP໰୊΋ղܾʂ ʁ

Slide 48

Slide 48 text

EFTUJOBUJPOJOTJEF OBWJHBUJPOUBC#BS extension UIStoryboardSegue { var embeddedDestination: UIViewController { return detectDestination(destination) } } private extension UIStoryboardSegue { func detectDestination(_ vc: UIViewController) -> UIViewController { switch vc { case let nav as UINavigationController: guard let top = nav.topViewController else { return nav } return detectDestination(top) case let tab as UITabBarController: guard let sel = tab.selectedViewController else { return tab } return detectDestination(sel) default: return vc } } }

Slide 49

Slide 49 text

EFTUJOBUJPOJOTJEF OBWJHBUJPOUBC#BS override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let messageView = segue.embeddedDestination as? MessageView { messageView.message = message } } 6*/BWJHBUJPO$POUSPMMFS 6*5BC#BS$POUSPMMFS ͕͋ͬͨΒ۷ΓԼ͛ΔΑ

Slide 50

Slide 50 text

$PODMVTJPO w 4UPSZCPBSEͱ஥ྑ͘ͳΔʹ͸·ͣ4FHVF͔Β w 1SPUPDPMࢦ޲Ͱมߋʹڧ͍4FHVFΛ

Slide 51

Slide 51 text

4FHVFΛ੍͢ऀ͸ 4UPSZCPBSEΛ੍͢

Slide 52

Slide 52 text

'JO