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
760
「シェア機能」について考えてみた
pkpkcarnage
0
120
リリースビルドでのみ起こる謎のバグに見舞われた話
pkpkcarnage
0
230
Any型をprotocolにキャストする時に 気をつけた方がいい話
pkpkcarnage
0
310
今日から使える! Optionalをいい感じに扱うtips
pkpkcarnage
0
1.3k
iOSの通信処理を簡潔に書く
pkpkcarnage
0
330
Other Decks in Programming
See All in Programming
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
120
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
2
350
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
920
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.8k
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
440
From 6 People Classroom Meetup to 100 People Regional Conference / FOSS4G Hiroshima 2026
furukawayasuto
0
120
デプロイ直後のレイテンシスパイクを調べたら、 Railsの仕様にたどり着いた
nhsykym
0
110
Webプラットフォームで議論されているセキュリティ課題 / Security issues being discussed on Web Platforms
petamoriken
0
150
初めての模倣学習とVLA
natsutan
0
500
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
640
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
210
Featured
See All Featured
HDC tutorial
michielstock
2
850
Code Reviewing Like a Champion
maltzj
528
40k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
260
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
660
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Discover your Explorer Soul
emna__ayadi
2
1.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Mobile First: as difficult as doing things right
swwweet
225
10k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Side Projects
sachag
455
43k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
980
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