Submit Search
Upload
節子、それViewControllerやない...、FatViewControllerや...。
•
5 likes
•
30,628 views
Kenji Tanaka
Follow
iOSDC 2017 前夜祭の資料 #iosdc
Read less
Read more
Technology
Report
Share
Report
Share
1 of 46
Download now
Download to read offline
Recommended
Spanner移行について本気出して考えてみた
Spanner移行について本気出して考えてみた
techgamecollege
20171117 redminetokyo13
20171117 redminetokyo13
Yukiya Hayashi
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
sairoutine
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
Sugimoto Chizuru
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
Yahoo!デベロッパーネットワーク
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
akirahiguchi
Recommended
Spanner移行について本気出して考えてみた
Spanner移行について本気出して考えてみた
techgamecollege
20171117 redminetokyo13
20171117 redminetokyo13
Yukiya Hayashi
DeNAの最新のマスタデータ管理システム Oyakata の全容
DeNAの最新のマスタデータ管理システム Oyakata の全容
sairoutine
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用
Sugimoto Chizuru
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
新技術を使った次世代の商品の見せ方 ~ヤフオク!のマルチビュー機能~ #yjtc
Yahoo!デベロッパーネットワーク
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQL
akirahiguchi
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
de:code 2017
Terraform Bootcamp - Azure Infrastructure as Code隊
Terraform Bootcamp - Azure Infrastructure as Code隊
Toru Makabe
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
Ken Morishita
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
Tokoroten Nakayama
Nmapの真実
Nmapの真実
abend_cve_9999_0001
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
MLOps入門
MLOps入門
Hiro Mura
Amazon Kinesis Video Streams WebRTC 使ってみた
Amazon Kinesis Video Streams WebRTC 使ってみた
mganeko
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
Yahoo!デベロッパーネットワーク
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例
Takeshi Kondo
Zap Scanning
Zap Scanning
Suresh Kumar
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
日本Javaユーザーグループ
M12_数百台の開発サーバをリフトアンドシフト! Azure Migrate 活用ポイント [Microsoft Japan Digital Days]
M12_数百台の開発サーバをリフトアンドシフト! Azure Migrate 活用ポイント [Microsoft Japan Digital Days]
日本マイクロソフト株式会社
クオリティゲートの通過判断として品質特性を利用した受入テストの導入と効果
クオリティゲートの通過判断として品質特性を利用した受入テストの導入と効果
JumpeiIto2
Jenkins 再入門
Jenkins 再入門
Jumpei Miyata
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
NTT DATA Technology & Innovation
MagicOnion入門
MagicOnion入門
torisoup
プロが解説!Hinemosによる運用管理テクニック
プロが解説!Hinemosによる運用管理テクニック
hinemos_atomitech
LINEのMySQL運用について
LINEのMySQL運用について
LINE Corporation
[22]Efficient and Testable MVVM pattern
[22]Efficient and Testable MVVM pattern
NAVER Engineering
jQuery secrets
jQuery secrets
Bastian Feder
More Related Content
What's hot
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
de:code 2017
Terraform Bootcamp - Azure Infrastructure as Code隊
Terraform Bootcamp - Azure Infrastructure as Code隊
Toru Makabe
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
Ken Morishita
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
Tokoroten Nakayama
Nmapの真実
Nmapの真実
abend_cve_9999_0001
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
dena_study
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
MLOps入門
MLOps入門
Hiro Mura
Amazon Kinesis Video Streams WebRTC 使ってみた
Amazon Kinesis Video Streams WebRTC 使ってみた
mganeko
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
Yahoo!デベロッパーネットワーク
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例
Takeshi Kondo
Zap Scanning
Zap Scanning
Suresh Kumar
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
日本Javaユーザーグループ
M12_数百台の開発サーバをリフトアンドシフト! Azure Migrate 活用ポイント [Microsoft Japan Digital Days]
M12_数百台の開発サーバをリフトアンドシフト! Azure Migrate 活用ポイント [Microsoft Japan Digital Days]
日本マイクロソフト株式会社
クオリティゲートの通過判断として品質特性を利用した受入テストの導入と効果
クオリティゲートの通過判断として品質特性を利用した受入テストの導入と効果
JumpeiIto2
Jenkins 再入門
Jenkins 再入門
Jumpei Miyata
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
NTT DATA Technology & Innovation
MagicOnion入門
MagicOnion入門
torisoup
プロが解説!Hinemosによる運用管理テクニック
プロが解説!Hinemosによる運用管理テクニック
hinemos_atomitech
LINEのMySQL運用について
LINEのMySQL運用について
LINE Corporation
What's hot
(20)
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
[TL10] Azure IaaS 構築・運用・管理の専門家が語る DevTest Labs ~高速・費用無駄ナシ・簡単管理を実現する開発・テスト環境の構築~
Terraform Bootcamp - Azure Infrastructure as Code隊
Terraform Bootcamp - Azure Infrastructure as Code隊
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
Nmapの真実
Nmapの真実
FINAL FANTASY Record Keeperのマスターデータを支える技術
FINAL FANTASY Record Keeperのマスターデータを支える技術
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
MLOps入門
MLOps入門
Amazon Kinesis Video Streams WebRTC 使ってみた
Amazon Kinesis Video Streams WebRTC 使ってみた
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
ヤフーでは開発迅速性と品質のバランスをどう取ってるか
JenkinsとSeleniumの活用事例
JenkinsとSeleniumの活用事例
Zap Scanning
Zap Scanning
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
Javaエンジニアに知ってほしい、Springの教科書「TERASOLUNA」 #jjug_ccc #ccc_f3
M12_数百台の開発サーバをリフトアンドシフト! Azure Migrate 活用ポイント [Microsoft Japan Digital Days]
M12_数百台の開発サーバをリフトアンドシフト! Azure Migrate 活用ポイント [Microsoft Japan Digital Days]
クオリティゲートの通過判断として品質特性を利用した受入テストの導入と効果
クオリティゲートの通過判断として品質特性を利用した受入テストの導入と効果
Jenkins 再入門
Jenkins 再入門
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
AWS Organizations連携サービスの罠(Security JAWS 第26回 発表資料)
MagicOnion入門
MagicOnion入門
プロが解説!Hinemosによる運用管理テクニック
プロが解説!Hinemosによる運用管理テクニック
LINEのMySQL運用について
LINEのMySQL運用について
Similar to 節子、それViewControllerやない...、FatViewControllerや...。
[22]Efficient and Testable MVVM pattern
[22]Efficient and Testable MVVM pattern
NAVER Engineering
jQuery secrets
jQuery secrets
Bastian Feder
Intro programacion funcional
Intro programacion funcional
NSCoder Mexico
Gutenberg sous le capot, modules réutilisables
Gutenberg sous le capot, modules réutilisables
Riad Benguella
Android workshop
Android workshop
Michael Galpin
international PHP2011_Bastian Feder_jQuery's Secrets
international PHP2011_Bastian Feder_jQuery's Secrets
smueller_sandsmedia
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
Tsuyoshi Yamamoto
Android Best Practices
Android Best Practices
Yekmer Simsek
Swift Delhi: Practical POP
Swift Delhi: Practical POP
Natasha Murashev
Improving android experience for both users and developers
Improving android experience for both users and developers
Pavel Lahoda
Droidcon2013 android experience lahoda
Droidcon2013 android experience lahoda
Droidcon Berlin
Building Lithium Apps
Building Lithium Apps
Nate Abele
Writing Maintainable JavaScript
Writing Maintainable JavaScript
Andrew Dupont
Deep dive into Oracle ADF
Deep dive into Oracle ADF
Euegene Fedorenko
Practical Protocol-Oriented-Programming
Practical Protocol-Oriented-Programming
Natasha Murashev
Practialpop 160510130818
Practialpop 160510130818
Shahzain Saeed
MCE^3 - Natasha Murashev - Practical Protocol-Oriented Programming in Swift
MCE^3 - Natasha Murashev - Practical Protocol-Oriented Programming in Swift
PROIDEA
jQuery secrets
jQuery secrets
Bastian Feder
Prescribing RX Responsibly
Prescribing RX Responsibly
Nareg Khoshafian
Smooth scrolling in UITableView and UICollectionView
Smooth scrolling in UITableView and UICollectionView
Andrea Prearo
Similar to 節子、それViewControllerやない...、FatViewControllerや...。
(20)
[22]Efficient and Testable MVVM pattern
[22]Efficient and Testable MVVM pattern
jQuery secrets
jQuery secrets
Intro programacion funcional
Intro programacion funcional
Gutenberg sous le capot, modules réutilisables
Gutenberg sous le capot, modules réutilisables
Android workshop
Android workshop
international PHP2011_Bastian Feder_jQuery's Secrets
international PHP2011_Bastian Feder_jQuery's Secrets
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
Grails 1.2 探検隊 -新たな聖杯をもとめて・・・-
Android Best Practices
Android Best Practices
Swift Delhi: Practical POP
Swift Delhi: Practical POP
Improving android experience for both users and developers
Improving android experience for both users and developers
Droidcon2013 android experience lahoda
Droidcon2013 android experience lahoda
Building Lithium Apps
Building Lithium Apps
Writing Maintainable JavaScript
Writing Maintainable JavaScript
Deep dive into Oracle ADF
Deep dive into Oracle ADF
Practical Protocol-Oriented-Programming
Practical Protocol-Oriented-Programming
Practialpop 160510130818
Practialpop 160510130818
MCE^3 - Natasha Murashev - Practical Protocol-Oriented Programming in Swift
MCE^3 - Natasha Murashev - Practical Protocol-Oriented Programming in Swift
jQuery secrets
jQuery secrets
Prescribing RX Responsibly
Prescribing RX Responsibly
Smooth scrolling in UITableView and UICollectionView
Smooth scrolling in UITableView and UICollectionView
More from Kenji Tanaka
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
Kenji Tanaka
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
Kenji Tanaka
ポストモーテムやってみた #yjbonfire
ポストモーテムやってみた #yjbonfire
Kenji Tanaka
2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #pixiv_ios_arch
Kenji Tanaka
2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #app_mp
Kenji Tanaka
2つの同期 4つの状態 #roppongiswift
2つの同期 4つの状態 #roppongiswift
Kenji Tanaka
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
Kenji Tanaka
よく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_night
Kenji Tanaka
Swiftで聞いておぼえるテスト書き
Swiftで聞いておぼえるテスト書き
Kenji Tanaka
設計時空のリファクタリング
設計時空のリファクタリング
Kenji Tanaka
WACATE 2018 Summer
WACATE 2018 Summer
Kenji Tanaka
テスト駆動開発入門 by Swift
テスト駆動開発入門 by Swift
Kenji Tanaka
An iOS Engineer challenges Web.
An iOS Engineer challenges Web.
Kenji Tanaka
エンジニアのためのブログ講座Ver4
エンジニアのためのブログ講座Ver4
Kenji Tanaka
TDDやってみよ
TDDやってみよ
Kenji Tanaka
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
Kenji Tanaka
iOS 11からのDeviceCheck #とは
iOS 11からのDeviceCheck #とは
Kenji Tanaka
設計に答えはないから探してみよう
設計に答えはないから探してみよう
Kenji Tanaka
iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有
Kenji Tanaka
iOS 11からのアプリ間ファイル共有_公開用
iOS 11からのアプリ間ファイル共有_公開用
Kenji Tanaka
More from Kenji Tanaka
(20)
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
ポストモーテムやってみた #yjbonfire
ポストモーテムやってみた #yjbonfire
2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #roppongiswift
2つの同期 4つの状態 #roppongiswift
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
よく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_night
Swiftで聞いておぼえるテスト書き
Swiftで聞いておぼえるテスト書き
設計時空のリファクタリング
設計時空のリファクタリング
WACATE 2018 Summer
WACATE 2018 Summer
テスト駆動開発入門 by Swift
テスト駆動開発入門 by Swift
An iOS Engineer challenges Web.
An iOS Engineer challenges Web.
エンジニアのためのブログ講座Ver4
エンジニアのためのブログ講座Ver4
TDDやってみよ
TDDやってみよ
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
iOS 11からのDeviceCheck #とは
iOS 11からのDeviceCheck #とは
設計に答えはないから探してみよう
設計に答えはないから探してみよう
iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有_公開用
iOS 11からのアプリ間ファイル共有_公開用
Recently uploaded
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
Miki Katsuragi
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
charlottematthew16
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
Mark Billinghurst
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
Stephanie Beckett
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
Lonnie McRorey
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
NavinnSomaal
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
Mattias Andersson
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
Hervé Boutemy
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
Dilum Bandara
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Enterprise Knowledge
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
charlottematthew16
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
Addepto
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
Scott Keck-Warren
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
LoriGlavin3
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Zilliz
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
Sergiu Bodiu
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
Manik S Magar
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
Sri Ambati
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
BookNet Canada
Recently uploaded
(20)
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
節子、それViewControllerやない...、FatViewControllerや...。
1.
2.
📦
3.
4.
5.
6.
7.
8.
🤔 override func viewDidLoad()
{ super.viewDidLoad() // HUD MBProgressHUD.showAdded(to: view, animated: true) Alamofire.request("https://hogefuga.com/piyo").responseJSON { [weak self] response in guard response.error == nil else { return } guard let data = response.data else { return } guard let piyo = String(data: data, encoding: .utf8) else { return } guard let weakSelf = self else { return } // UI weakSelf.piyoLabel.text = piyo DispatchQueue.main.async { [weak self] in guard let s = self else { return } MBProgressHUD.hideAllHUDs(for: s.view, animated: true) } } }
9.
🤔 override func viewDidLoad()
{ super.viewDidLoad() metadataObjectTypesButton.isEnabled = false sessionPresetsButton.isEnabled = false cameraButton.isEnabled = false zoomSlider.isEnabled = false previewView.addGestureRecognizer(openBarcodeURLGestureRecognizer) previewView.session = session switch AVCaptureDevice.authorizationStatus(forMediaType: .video) { case .authorized: break case .notDetermined: sessionQueue.suspend() AVCaptureDevice.requestAccess(forMediaType: .video, completionHandler: { granted in if !granted { self.setupResult = .notAuthorized } self.sessionQueue.resume() }) default: setupResult = .notAuthorized } sessionQueue.async { self.configureSession() } }
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
🤔 override func viewDidLoad()
{ super.viewDidLoad() // HUD MBProgressHUD.showAdded(to: view, animated: true) Alamofire.request("https://hogefuga.com/piyo").responseJSON { [weak self] response in guard response.error == nil else { return } guard let data = response.data else { return } guard let piyo = String(data: data, encoding: .utf8) else { return } guard let weakSelf = self else { return } // UI weakSelf.piyoLabel.text = piyo DispatchQueue.main.async { [weak self] in guard let s = self else { return } MBProgressHUD.hideAllHUDs(for: s.view, animated: true) } } }
27.
🙆 class PiyoViewControllerImpl: UIViewController
{ var piyoPresenter: PiyoPresenter! @IBOutlet weak var piyoLabel: UILabel! override func viewDidLoad() { super.viewDidLoad() piyoPresenter.readyForDisplay() } } extension PiyoViewControllerImpl: PiyoViewController { func showProgress() { MBProgressHUD.showAdded(to: view, animated: true) } func hideProgress() { DispatchQueue.main.async { [weak self] in guard let weakSelf = self else { return } MBProgressHUD.hideAllHUDs(for: weakSelf.view, animated: true) } } func showPiyo(piyo: String) { piyoLabel.text = piyo } }
28.
29.
protocol StatsViewController: class
{ func showProfile(_ profile: Profile) func reloadTableView() }
30.
final class StatsViewControllerImpl:
UIViewController { var statsPresenter: StatsPresenter! @IBOutlet weak var nicknameLabel: UILabel! @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() statsPresenter.readyForDisplay(byMatch: .solo, region: .asia) } } extension StatsViewControllerImpl: StatsViewController { func showProfile(_ profile: Profile) { DispatchQueue.main.async { [weak self] in guard let weakSelf = self else { return } weakSelf.nicknameLabel.text = profile.playerName } } func reloadTableView() { tableView.reloadData() } }
31.
final class StatsViewControllerImpl:
UIViewController { var statsPresenter: StatsPresenter! @IBOutlet weak var nicknameLabel: UILabel! @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() statsPresenter.readyForDisplay(byMatch: .solo, region: .asia) } } extension StatsViewControllerImpl: StatsViewController { func showProfile(_ profile: Profile) { DispatchQueue.main.async { [weak self] in guard let weakSelf = self else { return } weakSelf.nicknameLabel.text = profile.playerName } } func reloadTableView() { tableView.reloadData() } }
32.
final class StatsViewControllerImpl:
UIViewController { var statsPresenter: StatsPresenter! @IBOutlet weak var nicknameLabel: UILabel! @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() statsPresenter.readyForDisplay(byMatch: .solo, region: .asia) } } extension StatsViewControllerImpl: StatsViewController { func showProfile(_ profile: Profile) { DispatchQueue.main.async { [weak self] in guard let weakSelf = self else { return } weakSelf.nicknameLabel.text = profile.playerName } } func reloadTableView() { tableView.reloadData() } }
33.
protocol StatsPresenter: class
{ var stats: Stats! { get } func readyForDisplay(byMatsh match: Match, region: Region) }
34.
final class StatsPresenterImpl:
StatsPresenter { private let pubgTrackerDataStore = PubgTrackerDataStore() private weak var statsViewController: StatsViewController! private var nickname: String! var stats: Stats! init(statsViewController: StatsViewController, nickname: String) { self.statsViewController = statsViewController self.nickname = nickname } func readyForDisplay(byMatsh match: Match, region: Region) { pubgTrackerDataStore.fetchPubgTracker(byNickname: nickname) { [weak self] stats in guard let weakSelf = self else { return } weakSelf.stats = stats weakSelf.statsViewController.reloadTableView() weakSelf.statsViewController.showProfile(profile) } } }
35.
final class StatsPresenterImpl:
StatsPresenter { private let pubgTrackerDataStore = PubgTrackerDataStore() private weak var statsViewController: StatsViewController! private var nickname: String! var stats: Stats! init(statsViewController: StatsViewController, nickname: String) { self.statsViewController = statsViewController self.nickname = nickname } func readyForDisplay(byMatsh match: Match, region: Region) { pubgTrackerDataStore.fetchPubgTracker(byNickname: nickname) { [weak self] stats in guard let weakSelf = self else { return } weakSelf.stats = stats weakSelf.statsViewController.reloadTableView() weakSelf.statsViewController.showProfile(profile) } } }
36.
final class StatsPresenterImpl:
StatsPresenter { private let pubgTrackerDataStore = PubgTrackerDataStore() private weak var statsViewController: StatsViewController! private var nickname: String! var stats: Stats! init(statsViewController: StatsViewController, nickname: String) { self.statsViewController = statsViewController self.nickname = nickname } func readyForDisplay(byMatsh match: Match, region: Region) { pubgTrackerDataStore.fetchPubgTracker(byNickname: nickname) { [weak self] stats in guard let weakSelf = self else { return } weakSelf.stats = stats weakSelf.statsViewController.reloadTableView() weakSelf.statsViewController.showProfile(profile) } } }
37.
final class StatsViewControllerImpl:
UIViewController { var statsPresenter: StatsPresenter! @IBOutlet weak var nicknameLabel: UILabel! @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() statsPresenter.readyForDisplay(byMatch: .solo, region: .asia) } } extension StatsViewControllerImpl: StatsViewController { func showProfile(_ profile: Profile) { DispatchQueue.main.async { [weak self] in guard let weakSelf = self else { return } weakSelf.nicknameLabel.text = profile.playerName } } func reloadTableView() { tableView.reloadData() } }
38.
39.
40.
41.
42.
43.
44.
45.
46.
Download now