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
「寝てても仕事が進む」Claude Codeで組む第二の脳
tomoyafujita2016
0
340
生成AI導入の「期待外れ」を乗り越える ー 開発フロー改革が目指す、真の組織変革
starfish719
0
4.6k
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
530
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
200
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
390
Cloudflare is Agents
chimame
0
170
the container ship “Apple Silicon”@WWDC26 Recap -Japan-\(region).swift
shingangan
0
130
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
760
React本体のコードリーディング
high_g_engineer
1
140
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
410
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
5
1.8k
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
210
Featured
See All Featured
KATA
mclloyd
PRO
35
15k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
580
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
650
Docker and Python
trallard
47
4.1k
Writing Fast Ruby
sferik
630
63k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
890
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
25k
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