Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Responder Chainを使って コードをスッキリさせたい - 第1回 HAKATA.s...
Search
ukitaka
April 16, 2018
Programming
1.5k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Responder Chainを使って コードをスッキリさせたい - 第1回 HAKATA.swift
https://hakata-swift.connpass.com/event/81656/
での発表です。
ukitaka
April 16, 2018
More Decks by ukitaka
See All by ukitaka
あなたの知らない「動画広告」の世界 - iOSDC Japan 2025
ukitaka
0
1.9k
CSの生産性改善を支える分析環境 Mercari CS/CRE Tech Talk #1
ukitaka
1
3.1k
switchのexhaustiveness/redundancy チェック 理論と実装 わいわいswiftc #8 @ukitaka
ukitaka
0
270
SwiftのDemanglerを書く @ わいわいswiftc番外編
ukitaka
0
500
Swiftの型システムに入門する - iOSDC Japan 2018
ukitaka
10
7.4k
理論から入門するswift/lib/Sema - わいわいswiftc #1
ukitaka
5
1.8k
Realmの処理を再利用可能かつ合成可能にする
ukitaka
0
990
マルチスレッドRxSwift @ 社内RxSwift勉強会
ukitaka
5
1.3k
今日こそ理解するHot / Cold @社内RxSwift勉強会
ukitaka
14
3k
Other Decks in Programming
See All in Programming
RSSとCodexを使ってX投稿自動化してみた
ochtum
0
110
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
120
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
230
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
130
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
140
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
120
Webの地図
yosuke_furukawa
PRO
3
3.5k
FastAPI の並行処理モデルを完全に理解する
hoto17296
9
3.9k
PyO3 で既存 Python 評価器を Rust core 化する ー wasm-bindgen でブラウザにも配るための設計
kdash
1
560
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
150
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
270
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
200
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
0
460
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
First, design no harm
axbom
PRO
2
1.3k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
370
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
980
Designing Powerful Visuals for Engaging Learning
tmiket
1
540
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
470
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Transcript
Responder ChainΛͬͯ ίʔυΛεοΩϦ͍ͤͨ͞ HAKATA.swift @ukitaka
twitter: @ukitaka_ github: @ukitaka Yuki Takahashi
ࣗݾհ ❤ ؔܕϓϩάϥϛϯάɺDDD ✏ ܕγεςϜɺίϯύΠϥ ϨΠϠʔ
ࠓͷ
͍͖ͳΓͰ͕͢ɺ ͜ΜͳέʔεΛߟ͑ͯΈΔ
Cellͷதͷ ϘλϯΛλοϓͨ͠Β Alert / ActionSheetग़͍ͨ͠
None
͋Γ͕ͪ
ຯʹΊΜͲ͍͘͞ • UIAlertControllerΛग़͢ʹViewControllerͰ ॲཧΛ͢Δඞཁ͕͋Δ • CellViewControllerͳΜͯΒͳ͍ • ViewControllerCellͷϘλϯΛ(ී௨)ࢀ র͍ͯ͠ͳ͍
Α͋͘Δରॲ๏ • DelegateΛҾճ͢ • ֊͕ਂ͘ͳΕͳΔ΄Ͳਏ͍ • ViewߏͷมԽʹऑ͍
ͳΜͱ͔͍ͨ͠
ݪʹཱͪฦͬͯMVC
MVCͰͲ͏͋Δ͖ʁ
None
None
ϢʔβΞΫγϣϯͷॲཧ • MVCʹ͓͚ΔControllerͷΑ͏ͳΦϒδΣΫ τʹ௨Λͯ͠ϢʔβΞΫγϣϯड͚ͱΔͷ ͕ී௨ • MVCʹݶΒͣɺͲͷΞʔΩςΫνϟͰ͋ͬͯ ಉ͡
௨Λ͠Α͏
ཧ
௨͢ΔଆΠϝʔδ .notifyΛݺͿ͚ͩ
௨Λड͚औΔଆΠϝʔδ ͍͍ײ͡ʹDelegateͰड͚औΕΔ
DelegateΛҾճ͢ඞཁ͕ͳ͍ DelegateύλʔϯͷΑ͏ͳ Πϝʔδ
ͦ͜Ͱ Responder Chain
= UIResponderͷ࿈ͳΓ
None
UIResponder • UIReponder = ϢʔβͷೖྗΛर͑Δͭ • ͋ΔsubviewͰΠϕϯτΛर͏ͱॲཧͰ͖Δͱ ͜Ζ·Ͱ࣍ʑʹॲཧΛճ͍ͯ͘͠ • self.next
Ͱ࣍ͷResponder͕औΕΔ = Responder Chain
None
UIResponder • ResponderChain্ʹવViewController ͍Δʂ • DelegateΛҾ͖ճ͢·Ͱͳ͘ɺ͢Ͱʹͭͳ ͕͍ͬͯΔ • ͜Εʹ͔ͬΕ͍͍ײ͡ʹViewControllerʹ ʮ௨ʯͰ͖ͦ͏ʂ
ͳΜ͔͑ͦ͏
Ͳ͏Δ͔ʁ
ActionΛఆٛ͢Δ
DelegateΛఆٛ͢Δ
ViewEventΛఆٛ͢Δ ୭͕ϋϯυϧ͢Δ͔ͱɺ Ͳ͏σΟεύον͢Δ͔ΛܾΊΔɻ
ViewEventΛఆٛ͢Δ
UIResponderΛ֦ு͢Δ Responder ChainΛḷͬͯɺ ΠϕϯτΛϋϯυϧͰ͖ΔͭΛݟ͚ͭΔ
ʂ
௨͢ΔଆΠϝʔδ .notifyΛݺͿ͚ͩ
௨Λड͚औΔଆΠϝʔδ ͍͍ײ͡ʹDelegateͰड͚औΕΔ
ཧͷੈք͕࣮ݱͨ͠
ྑ͍ • DelegateΛViewͷਂ͍֊·ͰҾճ͢ඞཁ͕ ͳ͘ͳͬͨ • Viewͷ֊͕มԽͨ͠ͱͯ͠ɺίʔυͷม ߋ͕ෆཁɻViewͷมߋʹڧ͍ɻ
มΘΒͳ͍ • ͋ΔΠϕϯτΛड͚औΔͨΊͷprotocol࣮ ͠ΕΛίϯύΠϧ࣌ʹݕग़Ͱ͖ͳ͍ • ͜ΕDelegateઃఆ͠ΕͰಉ͡ • ࣮ࡍʹಈ͔͢ or ςετͰΧόʔ
RxCocoaͷԠ༻
RxCocoa + Responder Chain • RxΛ͍ͬͯͯಉ͕͡ى͜Δ • RxDataSourcesΛ͍ͬͯͯɺCellͷதͷΠ ϕϯτर͑ͳ͍ •
Responder Chainʹྲྀͯ͠͠·͓͏
ukitaka/RxResponderChain
͍ํ
ࡶʹResponder Chainʹྲྀ͢ Ϙλϯ͕λοϓ͞ΕͨΒ
ࡶʹResponder Chainʹྲྀ͢ దͳܕʹมͯ͠
ࡶʹResponder Chainʹྲྀ͢ Responder Chainʹྲྀ͢
ࡶʹVCͰड͚औΔ ViewControllerͰ ܕΛࢦఆͯ͠ड͚औΔ
গ͚࣮ͩ͠ΛΈΔ
࣮ͷཪଆ ࠇຐज़ʹΑ֤ͬͯUIResponderΦϒδΣΫτʹ PublishSubjectΛ࣋ͨͤΔ
࣮ͷཪଆ self.rx.responderChain Λੜ͢
࣮ͷཪଆ ͜ͷΦϒδΣΫτObserverType
࣮ͷཪଆ ʹEvent͕ྲྀΕ͖ͯͨΒ ResponderChainΛḷͬͯ
࣮ͷཪଆ ͖ͬ͞ੜͨ͠PublishSubjectʹ ΠϕϯτΛྲྀ͢
࣮ͷཪଆ ड͚औΔͱ͖ܕͰfilter
·ͱΊ
ResponderChain • View → ViewControllerResponder Chainܨ ͕͍ͬͯΔ • ௨ʹ͑Δ /
ָʹॻ͚Δ / มߋʹڧ͍
͓ΘΓ