Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
もっと早く教えて欲しかった画面遷移
Search
PKPK-Carnage
January 22, 2019
Programming
370
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
もっと早く教えて欲しかった画面遷移
PKPK-Carnage
January 22, 2019
More Decks by PKPK-Carnage
See All by PKPK-Carnage
iOSアプリを堅牢にデザインするために知っておくべきたった1つのこと
pkpkcarnage
0
510
アプリへの導線の増やし方.pdf
pkpkcarnage
0
750
「シェア機能」について考えてみた
pkpkcarnage
0
120
リリースビルドでのみ起こる謎のバグに見舞われた話
pkpkcarnage
0
230
Any型をprotocolにキャストする時に 気をつけた方がいい話
pkpkcarnage
0
310
今日から使える! Optionalをいい感じに扱うtips
pkpkcarnage
0
1.3k
iOSの通信処理を簡潔に書く
pkpkcarnage
0
320
Other Decks in Programming
See All in Programming
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
1
750
OSもどきOS
arkw
0
480
Inside Stream API
skrb
1
680
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
330
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.4k
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
250
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
670
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
3.6k
さぁV100、メモリをお食べ・・・
nilpe
0
130
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
120
Featured
See All Featured
Thoughts on Productivity
jonyablonski
76
5.2k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Everyday Curiosity
cassininazir
0
230
Building a Scalable Design System with Sketch
lauravandoore
463
34k
WCS-LA-2024
lcolladotor
0
620
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
220
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
450
Designing for humans not robots
tammielis
254
26k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
GraphQLとの向き合い方2022年版
quramy
50
15k
Transcript
ͬͱૣ͘ڭ͑ͯཉ͔ͬͨ͠ը໘ભҠ 1/22 ͋Δ͋ΔLTʙεϚϗΞϓϦ։ൃΤϯδχΞʙ Vol.2 PKPK-Carnage 1
About me • iOSྺ2ͪΐͬͱ • Qiita → @PKPK-Carnage • Github
→ PKPK-Carnage • Twitter → @PKPK-Carnage
ը໘ભҠͬͯͲ͏ͬͯ·͔͢ʁ 3
ηάΤ vs ίʔυ 4
ηάΤ 5
Hoge͔ΒFugaʹભҠͯ͠ɺ Fuga͔ΒPiyoʹભҠͯ͠ɾɾɾ 6
7
8
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 } } } }
͋ͷը໘͔Βͦͷը໘ʹભҠͯ͠ɺ ͦͷը໘͔Β3छྨͷը໘ʹભҠͯ͠ɾɾɾ 10
11
12
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 } } } }
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 } } } }
! 15
(PPE #BE • ભҠΛࢹ֮తʹݟΕΔ • ؆୯ʹ࣮Ͱ͖Δ 22 • ը໘͕૿͑ΔͱΧΦε •
ίϯϑϦΫτͰઈ͢Δ • identifierͰભҠઌΛࢦఆ͠ͳ͚ ΕͳΒͳ͍ • prepareϝιου͕ѻ͍ͮΒ͍
ίʔυ 23
24 extension HogeViewController { @IBAction private func didTapFugaButton(_ sender: UIButton)
{ self.performSegue(withIdentifier: "showFuga", sender: sender.tag) } }
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) } }
(PPE #BE • ָ͕͠ʹͰ͖Δ • ίϯϑϦΫτ͍ͯ͢͠͠ • segueΑΓ҆৺ 32 •
ભҠΛࢹ֮తʹݟΕͳ͘ͳΔ • Ͳͷը໘ʹભҠ͢Δ͔Ѳ͢Δ ͷ͕େม • ॲཧΛॻ͘ͷ͕໘
" 34
protocol + extensitonͰղܾ͢Δ 35
ભҠ͢ΔͨΊͷ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) } }
protocolΛద༻͢Δ 37 extension HogeViewController: FugaTransitable { @IBAction private func didTapFugaButton(_
sender: UIButton) { self.transitToFuga(value: sender.tag) } }
ભҠͷprotocolΛՃ͍ͯ͘͠ 38 extension HogeViewController: FugaTransitable, PiyoTransitable { @IBAction private func
didTapFugaButton(_ sender: UIButton) { self.transitToFuga(value: sender.tag) } }
(PPE #BE • ָ͕͠ʹͰ͖Δ • ίϯϑϦΫτ͍ͯ͢͠͠ • segueΑΓ҆৺ • ࣮͞Ε͍ͯΔprotocolͰભҠઌ
͕Θ͔Δ • ॲཧΛॻ͘ͷָ͕ 42 #
·ͱΊ • iOSͰը໘ભҠηάΤͱίʔυͷ2ύλʔϯ͋Δ • ͦΕͧΕϝϦοτͱσϝϦοτ͕͋Δ • protocolͱextensionΛۦ͢ΕίʔυͰͷσϝϦοτΛഉ আͰ͖Δ • ͜ͷΓํΛͬͨ࣌ʹͬͱૣ͘Γ͔ͨͬͨͱࢥͬͨ
47
͓ΘΓ 48