Slide 1

Slide 1 text

΋ͬͱૣ͘ڭ͑ͯཉ͔ͬͨ͠ը໘ભҠ 1/22 ͋Δ͋ΔLTʙεϚϗΞϓϦ։ൃΤϯδχΞʙ Vol.2 PKPK-Carnage 1

Slide 2

Slide 2 text

About me • iOSྺ2೥ͪΐͬͱ • Qiita → @PKPK-Carnage • Github → PKPK-Carnage • Twitter → @PKPK-Carnage

Slide 3

Slide 3 text

ը໘ભҠͬͯͲ͏΍ͬͯ·͔͢ʁ 3

Slide 4

Slide 4 text

ηάΤ vs ίʔυ 4

Slide 5

Slide 5 text

ηάΤ 5

Slide 6

Slide 6 text

Hoge͔ΒFugaʹભҠͯ͠ɺ Fuga͔ΒPiyoʹભҠͯ͠ɾɾɾ 6

Slide 7

Slide 7 text

7

Slide 8

Slide 8 text

8

Slide 9

Slide 9 text

9 extension HogeViewController { @IBAction private func didTapFugaButton(_ sender: UIButton) { self.performSegue(withIdentifier: "showFuga", sender: sender.tag) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let vc = segue.destination as? FugaViewController { if let value = sender as? Int { vc.value = value } } } }

Slide 10

Slide 10 text

͋ͷը໘͔Β͸௚઀ͦͷը໘ʹભҠͯ͠ɺ ͦͷը໘͔Β͸3छྨͷը໘ʹભҠͯ͠ɾɾɾ 10

Slide 11

Slide 11 text

11

Slide 12

Slide 12 text

12

Slide 13

Slide 13 text

13 extension HogeViewController { @IBAction private func didTapFugaButton(_ sender: UIButton) { self.performSegue(withIdentifier: "showFuga", sender: sender.tag) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let vc = segue.destination as? FugaViewController { if let value = sender as? Int { vc.value = value } } } }

Slide 14

Slide 14 text

14 extension HogeViewController { @IBAction private func didTapFugaButton(_ sender: UIButton) { self.performSegue(withIdentifier: "showFuga", sender: sender.tag) } @IBAction private func didTapPiyoButton(_ sender: UIButton) { self.performSegue(withIdentifier: "showPiyo", sender: sender.currentTitle) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { if let vc = segue.destination as? FugaViewController { if let value = sender as? Int { vc.value = value } } else if let vc = segue.destination as? PiyoViewController { if let value = sender as? String { vc.value = value } } } }

Slide 15

Slide 15 text

! 15

Slide 16

Slide 16 text

(PPE #BE • ભҠΛࢹ֮తʹݟΕΔ • ؆୯ʹ࣮૷Ͱ͖Δ 22 • ը໘਺͕૿͑ΔͱΧΦε • ίϯϑϦΫτͰઈ๬͢Δ • identifierͰભҠઌΛࢦఆ͠ͳ͚ Ε͹ͳΒͳ͍ • prepareϝιου͕ѻ͍ͮΒ͍

Slide 17

Slide 17 text

ίʔυ 23

Slide 18

Slide 18 text

24 extension HogeViewController { @IBAction private func didTapFugaButton(_ sender: UIButton) { self.performSegue(withIdentifier: "showFuga", sender: sender.tag) } }

Slide 19

Slide 19 text

25 extension HogeViewController { @IBAction private func didTapFugaButton(_ sender: UIButton) { let vc = FugaViewController(nibName: "FugaViewController", bundle: .main) vc.value = sender.tag self.navigationController?.pushViewController(vc, animated: true) } }

Slide 20

Slide 20 text

(PPE #BE • ஋౉ָ͕͠ʹͰ͖Δ • ίϯϑϦΫτͯ͠΋௚͠΍͍͢ • segueΑΓ҆৺ 32 • ભҠΛࢹ֮తʹݟΕͳ͘ͳΔ • Ͳͷը໘ʹભҠ͢Δ͔೺Ѳ͢Δ ͷ͕େม • ॲཧΛॻ͘ͷ͕໘౗

Slide 21

Slide 21 text

" 34

Slide 22

Slide 22 text

protocol + extensitonͰղܾ͢Δ 35

Slide 23

Slide 23 text

ભҠ͢ΔͨΊͷprotocolΛ࡞Δ 36 protocol FugaTransitable: class { func transitToFuga(value: Int) } extension FugaTransitable where Self: UIViewController { func transitToFuga(value: Int) { let vc = FugaViewController(nibName: "FugaViewController", bundle: .main) vc.value = value self.navigationController?.pushViewController(vc, animated: true) } }

Slide 24

Slide 24 text

protocolΛద༻͢Δ 37 extension HogeViewController: FugaTransitable { @IBAction private func didTapFugaButton(_ sender: UIButton) { self.transitToFuga(value: sender.tag) } }

Slide 25

Slide 25 text

ભҠͷprotocolΛ௥Ճ͍ͯ͘͠ 38 extension HogeViewController: FugaTransitable, PiyoTransitable { @IBAction private func didTapFugaButton(_ sender: UIButton) { self.transitToFuga(value: sender.tag) } }

Slide 26

Slide 26 text

(PPE #BE • ஋౉ָ͕͠ʹͰ͖Δ • ίϯϑϦΫτͯ͠΋௚͠΍͍͢ • segueΑΓ҆৺ • ࣮૷͞Ε͍ͯΔprotocolͰભҠઌ ͕Θ͔Δ • ॲཧΛॻ͘ͷָ͕ 42 #

Slide 27

Slide 27 text

·ͱΊ • iOSͰը໘ભҠ͸ηάΤͱίʔυͷ2ύλʔϯ͋Δ • ͦΕͧΕϝϦοτͱσϝϦοτ͕͋Δ • protocolͱextensionΛۦ࢖͢Ε͹ίʔυͰͷσϝϦοτΛഉ আͰ͖Δ • ͜ͷ΍ΓํΛ஌ͬͨ࣌ʹ΋ͬͱૣ͘஌Γ͔ͨͬͨͱࢥͬͨ 47

Slide 28

Slide 28 text

͓ΘΓ 48