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
520
アプリへの導線の増やし方.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
Foundation Models frameworkで画像分析
ryodeveloper
1
620
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
270
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.8k
わからない話を追いかけたら、プログラミング言語を作る側にいた
ydah
3
520
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
270
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.7k
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.7k
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
19k
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
110
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
290
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
530
Featured
See All Featured
BBQ
matthewcrist
89
10k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
490
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
470
SEO for Brand Visibility & Recognition
aleyda
0
4.7k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
280
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
710
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
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