SlideShare a Scribd company logo
1 of 60
Download to read offline










class TimelineTableViewController: UITableViewController {
var tweets: [Tweet] = []
func tableView(tableView: UITableView, numberOfRowsInSection
section: Int) -> Int {
return tweets.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath
indexPath: NSIndexPath) -> UITableViewCell {
return UITableViewCell()
}
}
class TimelineTableViewController: UITableViewController {
private let timelineDataSource = TimelineDataSource()
private let timelineDelegate = TimelineDelegate()
override func viewDidLoad() {
tableView.dataSource = timelineDataSource
tableView.delegate = timelineDelegate

}
class TimelineDataSource: NSObject, UITableViewDataSource {
var tweets: [Tweet] = []
func tableView(tableView: UITableView, numberOfRowsInSection section:
Int) -> Int {
return tweets.count
}
import UIKit
class KobitoSettingViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, KobitoCollectionViewCellDelegate {
var delegate: BackDelegate?
@IBOutlet weak var kobitoMediumImageView: UIImageView!
@IBOutlet weak var kobitoNameLabel: UILabel!
@IBOutlet weak var collectionView: UICollectionView!
@IBOutlet weak var backButton: UIButton!
@IBOutlet weak var gotchaButton: UIButton!
var isShowedKobitoDetailView = false
var currentSelectedIndex: Int {
return KobitoManager.sharedManager.currentKobito.type.rawValue
}
override func viewDidLoad() {
backButton.imageView?.contentMode = .ScaleAspectFit
gotchaButton.imageView?.contentMode = .ScaleAspectFit
kobitoMediumImageView.image = KobitoManager.sharedManager.currentKobito.type.miniImage
kobitoNameLabel.text = KobitoManager.sharedManager.currentKobito.type.name
automaticallyAdjustsScrollViewInsets = false
var cellSide:CGFloat = 0
var lrMargin:CGFloat = 0
var tbMargin:CGFloat = 0
// これはした方がいいかも.
if collectionView.frame.height/2 < collectionView.frame.width/3 {
tbMargin = 4
cellSide = (collectionView.frame.size.height - (tbMargin * 4)) / 2
lrMargin = (collectionView.frame.size.width - (cellSide * 3)) / 6
}else {
lrMargin = 2
cellSide = (collectionView.frame.size.width - (lrMargin * 6)) / 3
tbMargin = (collectionView.frame.size.height - (cellSide * 2)) / 4
}
let layout = UICollectionViewFlowLayout()
layout.itemSize = CGSize(width: cellSide, height: cellSide)
layout.sectionInset = UIEdgeInsets(top: tbMargin, left: lrMargin, bottom: tbMargin, right: lrMargin)
collectionView.collectionViewLayout = layout
collectionView.delegate = self
collectionView.dataSource = self
}
override func viewDidAppear(animated: Bool) {
showCurrentSelectedMark()
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat {
return 12
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat {
return 0
}
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 6
}
class Timeline {
private var tweets: [Tweet] = []
init(tweets: [Tweet]) {
self.tweets = tweets
}
var numberOfTweet: Int {
return tweets.count
}
subscript(index: Int) -> Tweet {
return tweets[index]
}
private func insertTweetAtIndex(tweet: Tweet, index: Int) {
tweets.insert(tweet, atIndex: index)
}
class TimelineDataSource: NSObject, UITableViewDataSource {
var timeline: Timeline = Timeline(tweets: [])
func tableView(tableView: UITableView, numberOfRowsInSection section:
Int) -> Int {
return timeline.numberOfTweet
}
struct Timeline {
private var tweets: [Tweet] = []
init(tweets: [Tweet]) {
self.tweets = tweets
}
var numberOfTweet: Int {
return tweets.count
}
subscript(index: Int) -> Tweet {
return tweets[index]
}
private func insertTweetAtIndex(tweet: Tweet, index: Int) -> Timeline {
var mutableTweets = tweets
mutableTweets.insert(tweet, atIndex: index)
return Timeline(tweets: mutableTweets)
}
func favoriteTweetAtIndex(index: Int) -> Timeline {
let cacheTweet = items[index]
let tweet = Tweet(
id: cacheTweet.id,
text: cacheTweet.text,
favorited: !cacheTweet.favorited,
retweeted: cacheTweet.retweeted,
user: cacheTweet.user)
return deleteItemAtIndex(index).insertItemAtIndex(tweet, index: index)
}
private func insertTweetAtIndex(tweet: Tweet, index: Int) -> Timeline {
var mutableTweets = tweets
mutableTweets.insert(tweet, atIndex: index)
return Timeline(tweets: mutableTweets)
}
private func insertItemAtIndex(item: Item, index: Int) -> Timeline {
var mutableItems = Items
mutableItems.insert(item, atIndex: index)
return Timeline(tweets: mutableItems)
}
protocol DataType {
associatedtype ItemType
var items: [ItemType] { get }
var numberOfItems: Int { get }
subscript(index: Int) -> ItemType { get }
func insertItemAtIndex(item: ItemType, index: Int) -> Self
func deleteItemAtIndex(index: Int) -> Self
}
protocol DataType {
associatedtype ItemType
var items: [ItemType] { get }
var numberOfItems: Int { get }
subscript(index: Int) -> ItemType { get }
func insertItemAtIndex(item: ItemType, index: Int) -> Self
func deleteItemAtIndex(index: Int) -> Self
}
protocol DataType {
associatedtype ItemType
var items: [ItemType] { get }
var numberOfItems: Int { get }
subscript(index: Int) -> ItemType { get }
func insertItemAtIndex(item: ItemType, index: Int) -> Self
func deleteItemAtIndex(index: Int) -> Self
}
protocol DataType {
associatedtype ItemType
var items: [ItemType] { get }
var numberOfItems: Int { get }
subscript(index: Int) -> ItemType { get }
func insertItemAtIndex(item: ItemType, index: Int) -> Self
func deleteItemAtIndex(index: Int) -> Self
}
struct Timeline: DataType {
typealias ItemType = Tweet
var items: [ItemType] = []
init(items: [ItemType]) {
self.items = items
}
var numberOfItems: Int {
return items.count
}
subscript(index: Int) -> Tweet {
return items[index]
}
func insertItemAtIndex(item: ItemType, index: Int) -> Timeline {
var mutableItems = items
mutableItems.insert(item, atIndex: index)
return Timeline(items: mutableItems)
}
func favoriteTweetAtIndex(index: Int) -> Timeline {
let cacheTweet = items[index]
let tweet = Tweet(
id: cacheTweet.id,
text: cacheTweet.text,
favorited: !cacheTweet.favorited,
retweeted: cacheTweet.retweeted,
user: cacheTweet.user)
return deleteItemAtIndex(index).insertItemAtIndex(tweet, index: index)
}










_人人人人人人_
> xcode圧力 <
 ̄Y^Y^Y^Y^Y ̄




















💪














Xcode Table View Data Source

More Related Content

What's hot

Get started with YUI
Get started with YUIGet started with YUI
Get started with YUIAdam Lu
 
Chaincode Development 區塊鏈鏈碼開發
Chaincode Development 區塊鏈鏈碼開發Chaincode Development 區塊鏈鏈碼開發
Chaincode Development 區塊鏈鏈碼開發HO-HSUN LIN
 
Daniel Jalkut - dotSwift 2019
Daniel Jalkut - dotSwift 2019Daniel Jalkut - dotSwift 2019
Daniel Jalkut - dotSwift 2019DanielJalkut
 
Sylius and Api Platform The story of integration
Sylius and Api Platform The story of integrationSylius and Api Platform The story of integration
Sylius and Api Platform The story of integrationŁukasz Chruściel
 
Event sourcing w PHP (by Piotr Kacała)
Event sourcing w PHP (by Piotr Kacała)Event sourcing w PHP (by Piotr Kacała)
Event sourcing w PHP (by Piotr Kacała)GOG.com dev team
 
Reactive, component 그리고 angular2
Reactive, component 그리고  angular2Reactive, component 그리고  angular2
Reactive, component 그리고 angular2Jeado Ko
 
Introduction to Zend Framework web services
Introduction to Zend Framework web servicesIntroduction to Zend Framework web services
Introduction to Zend Framework web servicesMichelangelo van Dam
 
Migrating from Flux to Redux. Why and how.
Migrating from Flux to Redux. Why and how.Migrating from Flux to Redux. Why and how.
Migrating from Flux to Redux. Why and how.Astrails
 
RxSwift 활용하기 - Let'Swift 2017
RxSwift 활용하기 - Let'Swift 2017RxSwift 활용하기 - Let'Swift 2017
RxSwift 활용하기 - Let'Swift 2017Wanbok Choi
 
Aplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com BackboneAplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com BackboneRafael Felix da Silva
 
CBSE Class XII Comp sc practical file
CBSE Class XII Comp sc practical fileCBSE Class XII Comp sc practical file
CBSE Class XII Comp sc practical filePranav Ghildiyal
 
LetSwift RxSwift 시작하기
LetSwift RxSwift 시작하기LetSwift RxSwift 시작하기
LetSwift RxSwift 시작하기Wanbok Choi
 
Symfony World - Symfony components and design patterns
Symfony World - Symfony components and design patternsSymfony World - Symfony components and design patterns
Symfony World - Symfony components and design patternsŁukasz Chruściel
 
A short tale about state machine
A short tale about state machineA short tale about state machine
A short tale about state machineŁukasz Chruściel
 

What's hot (19)

Chainable datasource
Chainable datasourceChainable datasource
Chainable datasource
 
Get started with YUI
Get started with YUIGet started with YUI
Get started with YUI
 
Zend framework service
Zend framework serviceZend framework service
Zend framework service
 
Chaincode Development 區塊鏈鏈碼開發
Chaincode Development 區塊鏈鏈碼開發Chaincode Development 區塊鏈鏈碼開發
Chaincode Development 區塊鏈鏈碼開發
 
Daniel Jalkut - dotSwift 2019
Daniel Jalkut - dotSwift 2019Daniel Jalkut - dotSwift 2019
Daniel Jalkut - dotSwift 2019
 
Sylius and Api Platform The story of integration
Sylius and Api Platform The story of integrationSylius and Api Platform The story of integration
Sylius and Api Platform The story of integration
 
Event sourcing w PHP (by Piotr Kacała)
Event sourcing w PHP (by Piotr Kacała)Event sourcing w PHP (by Piotr Kacała)
Event sourcing w PHP (by Piotr Kacała)
 
Reactive, component 그리고 angular2
Reactive, component 그리고  angular2Reactive, component 그리고  angular2
Reactive, component 그리고 angular2
 
Introduction to Zend Framework web services
Introduction to Zend Framework web servicesIntroduction to Zend Framework web services
Introduction to Zend Framework web services
 
Migrating from Flux to Redux. Why and how.
Migrating from Flux to Redux. Why and how.Migrating from Flux to Redux. Why and how.
Migrating from Flux to Redux. Why and how.
 
RxSwift 활용하기 - Let'Swift 2017
RxSwift 활용하기 - Let'Swift 2017RxSwift 활용하기 - Let'Swift 2017
RxSwift 활용하기 - Let'Swift 2017
 
Aplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com BackboneAplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com Backbone
 
Django quickstart
Django quickstartDjango quickstart
Django quickstart
 
CBSE Class XII Comp sc practical file
CBSE Class XII Comp sc practical fileCBSE Class XII Comp sc practical file
CBSE Class XII Comp sc practical file
 
LetSwift RxSwift 시작하기
LetSwift RxSwift 시작하기LetSwift RxSwift 시작하기
LetSwift RxSwift 시작하기
 
Symfony World - Symfony components and design patterns
Symfony World - Symfony components and design patternsSymfony World - Symfony components and design patterns
Symfony World - Symfony components and design patterns
 
A short tale about state machine
A short tale about state machineA short tale about state machine
A short tale about state machine
 
Backbone - TDC 2011 Floripa
Backbone - TDC 2011 FloripaBackbone - TDC 2011 Floripa
Backbone - TDC 2011 Floripa
 
Epic South Disasters
Epic South DisastersEpic South Disasters
Epic South Disasters
 

Viewers also liked

AKIBA.swift vol.1
AKIBA.swift vol.1AKIBA.swift vol.1
AKIBA.swift vol.1cocominap
 
あのアニメのOp,edっぽいアニメーションを実装する話
あのアニメのOp,edっぽいアニメーションを実装する話あのアニメのOp,edっぽいアニメーションを実装する話
あのアニメのOp,edっぽいアニメーションを実装する話Kenji Tanaka
 
はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版Tomoki Hasegawa
 
Swift 構造体の時代 #yidev
Swift 構造体の時代 #yidevSwift 構造体の時代 #yidev
Swift 構造体の時代 #yidevTomohiro Kumagai
 
Swift 3.0 で変わったところ - 厳選 13 項目 #love_swift #cswift
Swift 3.0 で変わったところ - 厳選 13 項目 #love_swift #cswiftSwift 3.0 で変わったところ - 厳選 13 項目 #love_swift #cswift
Swift 3.0 で変わったところ - 厳選 13 項目 #love_swift #cswiftTomohiro Kumagai
 
Objective-C のキャストと Swift の型変換を比べてみる #akibaswift
Objective-C のキャストと Swift の型変換を比べてみる #akibaswiftObjective-C のキャストと Swift の型変換を比べてみる #akibaswift
Objective-C のキャストと Swift の型変換を比べてみる #akibaswiftTomohiro Kumagai
 
Swift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdotsSwift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdotsTomohiro Kumagai
 
Swift イニシャライザー復習会 #love_swift #akibaswift #21cafe
Swift イニシャライザー復習会 #love_swift #akibaswift #21cafeSwift イニシャライザー復習会 #love_swift #akibaswift #21cafe
Swift イニシャライザー復習会 #love_swift #akibaswift #21cafeTomohiro Kumagai
 
成長する組織を支えるシロクの自動化
成長する組織を支えるシロクの自動化成長する組織を支えるシロクの自動化
成長する組織を支えるシロクの自動化Naoyuki Kataoka
 
シロク流事業の立ち上げ方の成功と失敗
シロク流事業の立ち上げ方の成功と失敗シロク流事業の立ち上げ方の成功と失敗
シロク流事業の立ち上げ方の成功と失敗Naoyuki Kataoka
 
Xp祭り2014 agile2014参加報告(パターンネットワーク分析を含む)
Xp祭り2014 agile2014参加報告(パターンネットワーク分析を含む)Xp祭り2014 agile2014参加報告(パターンネットワーク分析を含む)
Xp祭り2014 agile2014参加報告(パターンネットワーク分析を含む)Hironori Washizaki
 
Swift3とObjective-Cのブリッジでハマったこと
Swift3とObjective-CのブリッジでハマったことSwift3とObjective-Cのブリッジでハマったこと
Swift3とObjective-Cのブリッジでハマったこと庸介 高橋
 
モダンな開発現場になるためのお作法としてのツール活用
モダンな開発現場になるためのお作法としてのツール活用モダンな開発現場になるためのお作法としてのツール活用
モダンな開発現場になるためのお作法としてのツール活用智治 長沢
 
プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__Tomohiro Kumagai
 
バ、バカな...!ハッカソンの中で成長しているだと...!?
バ、バカな...!ハッカソンの中で成長しているだと...!?バ、バカな...!ハッカソンの中で成長しているだと...!?
バ、バカな...!ハッカソンの中で成長しているだと...!?Kenji Tanaka
 
クラウド利用も可能になって身近になった超高速リアルタイムEAI「Magic xpi」
クラウド利用も可能になって身近になった超高速リアルタイムEAI「Magic xpi」クラウド利用も可能になって身近になった超高速リアルタイムEAI「Magic xpi」
クラウド利用も可能になって身近になった超高速リアルタイムEAI「Magic xpi」Tsuyoshi Watanabe
 
多人数iOSアプリ開発を考える
多人数iOSアプリ開発を考える多人数iOSアプリ開発を考える
多人数iOSアプリ開発を考えるsasaron 397
 
AWS Cognitoを実際のアプリで導入してハマったこと
AWS Cognitoを実際のアプリで導入してハマったことAWS Cognitoを実際のアプリで導入してハマったこと
AWS Cognitoを実際のアプリで導入してハマったこと洋一郎 櫻井
 
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!Kanako Kobayashi
 

Viewers also liked (20)

AKIBA.swift vol.1
AKIBA.swift vol.1AKIBA.swift vol.1
AKIBA.swift vol.1
 
あのアニメのOp,edっぽいアニメーションを実装する話
あのアニメのOp,edっぽいアニメーションを実装する話あのアニメのOp,edっぽいアニメーションを実装する話
あのアニメのOp,edっぽいアニメーションを実装する話
 
はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版はじめてのiOSアプリ開発 Swift対応版
はじめてのiOSアプリ開発 Swift対応版
 
Swift 構造体の時代 #yidev
Swift 構造体の時代 #yidevSwift 構造体の時代 #yidev
Swift 構造体の時代 #yidev
 
Swift 3.0 で変わったところ - 厳選 13 項目 #love_swift #cswift
Swift 3.0 で変わったところ - 厳選 13 項目 #love_swift #cswiftSwift 3.0 で変わったところ - 厳選 13 項目 #love_swift #cswift
Swift 3.0 で変わったところ - 厳選 13 項目 #love_swift #cswift
 
Objective-C のキャストと Swift の型変換を比べてみる #akibaswift
Objective-C のキャストと Swift の型変換を比べてみる #akibaswiftObjective-C のキャストと Swift の型変換を比べてみる #akibaswift
Objective-C のキャストと Swift の型変換を比べてみる #akibaswift
 
Swift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdotsSwift らしい表現を目指そう #eventdots
Swift らしい表現を目指そう #eventdots
 
Swift イニシャライザー復習会 #love_swift #akibaswift #21cafe
Swift イニシャライザー復習会 #love_swift #akibaswift #21cafeSwift イニシャライザー復習会 #love_swift #akibaswift #21cafe
Swift イニシャライザー復習会 #love_swift #akibaswift #21cafe
 
Swift Type System
Swift Type SystemSwift Type System
Swift Type System
 
成長する組織を支えるシロクの自動化
成長する組織を支えるシロクの自動化成長する組織を支えるシロクの自動化
成長する組織を支えるシロクの自動化
 
シロク流事業の立ち上げ方の成功と失敗
シロク流事業の立ち上げ方の成功と失敗シロク流事業の立ち上げ方の成功と失敗
シロク流事業の立ち上げ方の成功と失敗
 
Xp祭り2014 agile2014参加報告(パターンネットワーク分析を含む)
Xp祭り2014 agile2014参加報告(パターンネットワーク分析を含む)Xp祭り2014 agile2014参加報告(パターンネットワーク分析を含む)
Xp祭り2014 agile2014参加報告(パターンネットワーク分析を含む)
 
Swift3とObjective-Cのブリッジでハマったこと
Swift3とObjective-CのブリッジでハマったことSwift3とObjective-Cのブリッジでハマったこと
Swift3とObjective-Cのブリッジでハマったこと
 
モダンな開発現場になるためのお作法としてのツール活用
モダンな開発現場になるためのお作法としてのツール活用モダンな開発現場になるためのお作法としてのツール活用
モダンな開発現場になるためのお作法としてのツール活用
 
プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__
 
バ、バカな...!ハッカソンの中で成長しているだと...!?
バ、バカな...!ハッカソンの中で成長しているだと...!?バ、バカな...!ハッカソンの中で成長しているだと...!?
バ、バカな...!ハッカソンの中で成長しているだと...!?
 
クラウド利用も可能になって身近になった超高速リアルタイムEAI「Magic xpi」
クラウド利用も可能になって身近になった超高速リアルタイムEAI「Magic xpi」クラウド利用も可能になって身近になった超高速リアルタイムEAI「Magic xpi」
クラウド利用も可能になって身近になった超高速リアルタイムEAI「Magic xpi」
 
多人数iOSアプリ開発を考える
多人数iOSアプリ開発を考える多人数iOSアプリ開発を考える
多人数iOSアプリ開発を考える
 
AWS Cognitoを実際のアプリで導入してハマったこと
AWS Cognitoを実際のアプリで導入してハマったことAWS Cognitoを実際のアプリで導入してハマったこと
AWS Cognitoを実際のアプリで導入してハマったこと
 
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
iOS開発を楽しむ最初の一歩!デリゲートをなるべく分かりやすく!
 

Similar to Xcode Table View Data Source

Taming Core Data by Arek Holko, Macoscope
Taming Core Data by Arek Holko, MacoscopeTaming Core Data by Arek Holko, Macoscope
Taming Core Data by Arek Holko, MacoscopeMacoscope
 
“iOS 11 в App in the Air”, Пронин Сергей, App in the Air
“iOS 11 в App in the Air”, Пронин Сергей, App in the Air“iOS 11 в App in the Air”, Пронин Сергей, App in the Air
“iOS 11 в App in the Air”, Пронин Сергей, App in the AirAvitoTech
 
Reactive clean architecture
Reactive clean architectureReactive clean architecture
Reactive clean architectureViktor Nyblom
 
20180721 code defragment
20180721 code defragment20180721 code defragment
20180721 code defragmentChiwon Song
 
Александр Зимин (Alexander Zimin) — Магия Swift
Александр Зимин (Alexander Zimin) — Магия SwiftАлександр Зимин (Alexander Zimin) — Магия Swift
Александр Зимин (Alexander Zimin) — Магия SwiftCocoaHeads
 
Cocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicCocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicBadoo Development
 
How to become an Android dev starting from iOS (and vice versa)
How to become an Android dev starting from iOS (and vice versa)How to become an Android dev starting from iOS (and vice versa)
How to become an Android dev starting from iOS (and vice versa)Giuseppe Filograno
 
How to build a debug view almost for free
How to build a debug view almost for freeHow to build a debug view almost for free
How to build a debug view almost for freeVincent Pradeilles
 
Creating a Facebook Clone - Part XXIX - Transcript.pdf
Creating a Facebook Clone - Part XXIX - Transcript.pdfCreating a Facebook Clone - Part XXIX - Transcript.pdf
Creating a Facebook Clone - Part XXIX - Transcript.pdfShaiAlmog1
 
«Управление логикой переходов между экранами приложения с помощью координатор...
«Управление логикой переходов между экранами приложения с помощью координатор...«Управление логикой переходов между экранами приложения с помощью координатор...
«Управление логикой переходов между экранами приложения с помощью координатор...Mail.ru Group
 
Swift勉強会第3回 〜UIを作ろう②〜
Swift勉強会第3回 〜UIを作ろう②〜Swift勉強会第3回 〜UIを作ろう②〜
Swift勉強会第3回 〜UIを作ろう②〜真次郎 新納
 
Oops lab manual2
Oops lab manual2Oops lab manual2
Oops lab manual2Mouna Guru
 
Threads, Queues, and More: Async Programming in iOS
Threads, Queues, and More: Async Programming in iOSThreads, Queues, and More: Async Programming in iOS
Threads, Queues, and More: Async Programming in iOSTechWell
 
UIKonf App & Data Driven Design @swift.berlin
UIKonf App & Data Driven Design @swift.berlinUIKonf App & Data Driven Design @swift.berlin
UIKonf App & Data Driven Design @swift.berlinMaxim Zaks
 
ヘルスケアサービスを実現する最新技術 〜HealthKit・GCP + Goの活用〜
ヘルスケアサービスを実現する最新技術  〜HealthKit・GCP + Goの活用〜ヘルスケアサービスを実現する最新技術  〜HealthKit・GCP + Goの活用〜
ヘルスケアサービスを実現する最新技術 〜HealthKit・GCP + Goの活用〜DeNA
 
ヘルスケアサービスを実現する最新技術 〜HealthKit・GCP + Goの活用〜
ヘルスケアサービスを実現する最新技術  〜HealthKit・GCP + Goの活用〜ヘルスケアサービスを実現する最新技術  〜HealthKit・GCP + Goの活用〜
ヘルスケアサービスを実現する最新技術 〜HealthKit・GCP + Goの活用〜DeNA
 
ヘルスケアサービスを実現する最新技術
〜HealthKit・GCP+Go〜
ヘルスケアサービスを実現する最新技術
〜HealthKit・GCP+Go〜ヘルスケアサービスを実現する最新技術
〜HealthKit・GCP+Go〜
ヘルスケアサービスを実現する最新技術
〜HealthKit・GCP+Go〜Fukaya Akifumi
 

Similar to Xcode Table View Data Source (20)

Taming Core Data by Arek Holko, Macoscope
Taming Core Data by Arek Holko, MacoscopeTaming Core Data by Arek Holko, Macoscope
Taming Core Data by Arek Holko, Macoscope
 
“iOS 11 в App in the Air”, Пронин Сергей, App in the Air
“iOS 11 в App in the Air”, Пронин Сергей, App in the Air“iOS 11 в App in the Air”, Пронин Сергей, App in the Air
“iOS 11 в App in the Air”, Пронин Сергей, App in the Air
 
Reactive clean architecture
Reactive clean architectureReactive clean architecture
Reactive clean architecture
 
20180721 code defragment
20180721 code defragment20180721 code defragment
20180721 code defragment
 
Scala on Your Phone
Scala on Your PhoneScala on Your Phone
Scala on Your Phone
 
Александр Зимин (Alexander Zimin) — Магия Swift
Александр Зимин (Alexander Zimin) — Магия SwiftАлександр Зимин (Alexander Zimin) — Магия Swift
Александр Зимин (Alexander Zimin) — Магия Swift
 
Cocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magicCocoaheads Meetup / Alex Zimin / Swift magic
Cocoaheads Meetup / Alex Zimin / Swift magic
 
【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例
 
How to become an Android dev starting from iOS (and vice versa)
How to become an Android dev starting from iOS (and vice versa)How to become an Android dev starting from iOS (and vice versa)
How to become an Android dev starting from iOS (and vice versa)
 
How to build a debug view almost for free
How to build a debug view almost for freeHow to build a debug view almost for free
How to build a debug view almost for free
 
Creating a Facebook Clone - Part XXIX - Transcript.pdf
Creating a Facebook Clone - Part XXIX - Transcript.pdfCreating a Facebook Clone - Part XXIX - Transcript.pdf
Creating a Facebook Clone - Part XXIX - Transcript.pdf
 
«Управление логикой переходов между экранами приложения с помощью координатор...
«Управление логикой переходов между экранами приложения с помощью координатор...«Управление логикой переходов между экранами приложения с помощью координатор...
«Управление логикой переходов между экранами приложения с помощью координатор...
 
Swift勉強会第3回 〜UIを作ろう②〜
Swift勉強会第3回 〜UIを作ろう②〜Swift勉強会第3回 〜UIを作ろう②〜
Swift勉強会第3回 〜UIを作ろう②〜
 
Oops lab manual2
Oops lab manual2Oops lab manual2
Oops lab manual2
 
I os 04
I os 04I os 04
I os 04
 
Threads, Queues, and More: Async Programming in iOS
Threads, Queues, and More: Async Programming in iOSThreads, Queues, and More: Async Programming in iOS
Threads, Queues, and More: Async Programming in iOS
 
UIKonf App & Data Driven Design @swift.berlin
UIKonf App & Data Driven Design @swift.berlinUIKonf App & Data Driven Design @swift.berlin
UIKonf App & Data Driven Design @swift.berlin
 
ヘルスケアサービスを実現する最新技術 〜HealthKit・GCP + Goの活用〜
ヘルスケアサービスを実現する最新技術  〜HealthKit・GCP + Goの活用〜ヘルスケアサービスを実現する最新技術  〜HealthKit・GCP + Goの活用〜
ヘルスケアサービスを実現する最新技術 〜HealthKit・GCP + Goの活用〜
 
ヘルスケアサービスを実現する最新技術 〜HealthKit・GCP + Goの活用〜
ヘルスケアサービスを実現する最新技術  〜HealthKit・GCP + Goの活用〜ヘルスケアサービスを実現する最新技術  〜HealthKit・GCP + Goの活用〜
ヘルスケアサービスを実現する最新技術 〜HealthKit・GCP + Goの活用〜
 
ヘルスケアサービスを実現する最新技術
〜HealthKit・GCP+Go〜
ヘルスケアサービスを実現する最新技術
〜HealthKit・GCP+Go〜ヘルスケアサービスを実現する最新技術
〜HealthKit・GCP+Go〜
ヘルスケアサービスを実現する最新技術
〜HealthKit・GCP+Go〜
 

More from Kenji Tanaka

FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdcFatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdcKenji Tanaka
 
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_nightリリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_nightKenji Tanaka
 
ポストモーテムやってみた #yjbonfire
ポストモーテムやってみた #yjbonfireポストモーテムやってみた #yjbonfire
ポストモーテムやってみた #yjbonfireKenji Tanaka
 
2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #pixiv_ios_arch2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #pixiv_ios_archKenji Tanaka
 
2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #app_mp2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #app_mpKenji Tanaka
 
2つの同期 4つの状態 #roppongiswift
2つの同期 4つの状態 #roppongiswift2つの同期 4つの状態 #roppongiswift
2つの同期 4つの状態 #roppongiswiftKenji Tanaka
 
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_nightトークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_nightKenji Tanaka
 
よく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_nightよく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_nightKenji Tanaka
 
Swiftで聞いておぼえるテスト書き
Swiftで聞いておぼえるテスト書きSwiftで聞いておぼえるテスト書き
Swiftで聞いておぼえるテスト書きKenji Tanaka
 
設計時空のリファクタリング
設計時空のリファクタリング設計時空のリファクタリング
設計時空のリファクタリングKenji Tanaka
 
WACATE 2018 Summer
WACATE 2018 SummerWACATE 2018 Summer
WACATE 2018 SummerKenji Tanaka
 
テスト駆動開発入門 by Swift
テスト駆動開発入門 by Swiftテスト駆動開発入門 by Swift
テスト駆動開発入門 by SwiftKenji Tanaka
 
An iOS Engineer challenges Web.
An iOS Engineer challenges Web.An iOS Engineer challenges Web.
An iOS Engineer challenges Web.Kenji Tanaka
 
エンジニアのためのブログ講座Ver4
エンジニアのためのブログ講座Ver4エンジニアのためのブログ講座Ver4
エンジニアのためのブログ講座Ver4Kenji Tanaka
 
TDDやってみよ
TDDやってみよTDDやってみよ
TDDやってみよKenji Tanaka
 
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品Kenji Tanaka
 
iOS 11からのDeviceCheck #とは
iOS 11からのDeviceCheck #とはiOS 11からのDeviceCheck #とは
iOS 11からのDeviceCheck #とはKenji Tanaka
 
設計に答えはないから探してみよう
設計に答えはないから探してみよう設計に答えはないから探してみよう
設計に答えはないから探してみようKenji Tanaka
 
iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有Kenji Tanaka
 
iOS 11からのアプリ間ファイル共有_公開用
iOS 11からのアプリ間ファイル共有_公開用iOS 11からのアプリ間ファイル共有_公開用
iOS 11からのアプリ間ファイル共有_公開用Kenji Tanaka
 

More from Kenji Tanaka (20)

FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdcFatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
FatViewControllerを安全に書き換える方法が見つからなかったので、どういう痛みを許容するか考えた #iosdc
 
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_nightリリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
リリース前のリグレッションテストがめんどい!のでMagic PodでUIテストを試してみる #pixiv_app_night
 
ポストモーテムやってみた #yjbonfire
ポストモーテムやってみた #yjbonfireポストモーテムやってみた #yjbonfire
ポストモーテムやってみた #yjbonfire
 
2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #pixiv_ios_arch2つの同期 4つの状態 #pixiv_ios_arch
2つの同期 4つの状態 #pixiv_ios_arch
 
2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #app_mp2つの同期 4つの状態 #app_mp
2つの同期 4つの状態 #app_mp
 
2つの同期 4つの状態 #roppongiswift
2つの同期 4つの状態 #roppongiswift2つの同期 4つの状態 #roppongiswift
2つの同期 4つの状態 #roppongiswift
 
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_nightトークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
トークンリフレッシュ処理を含むAPIClientのテスト #hakata_test_night
 
よく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_nightよく使うテストヘルパーの紹介 #ios_test_night
よく使うテストヘルパーの紹介 #ios_test_night
 
Swiftで聞いておぼえるテスト書き
Swiftで聞いておぼえるテスト書きSwiftで聞いておぼえるテスト書き
Swiftで聞いておぼえるテスト書き
 
設計時空のリファクタリング
設計時空のリファクタリング設計時空のリファクタリング
設計時空のリファクタリング
 
WACATE 2018 Summer
WACATE 2018 SummerWACATE 2018 Summer
WACATE 2018 Summer
 
テスト駆動開発入門 by Swift
テスト駆動開発入門 by Swiftテスト駆動開発入門 by Swift
テスト駆動開発入門 by Swift
 
An iOS Engineer challenges Web.
An iOS Engineer challenges Web.An iOS Engineer challenges Web.
An iOS Engineer challenges Web.
 
エンジニアのためのブログ講座Ver4
エンジニアのためのブログ講座Ver4エンジニアのためのブログ講座Ver4
エンジニアのためのブログ講座Ver4
 
TDDやってみよ
TDDやってみよTDDやってみよ
TDDやってみよ
 
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
ストレス社会に生きる、iOSエンジニアにオススメする百合の世界と作品
 
iOS 11からのDeviceCheck #とは
iOS 11からのDeviceCheck #とはiOS 11からのDeviceCheck #とは
iOS 11からのDeviceCheck #とは
 
設計に答えはないから探してみよう
設計に答えはないから探してみよう設計に答えはないから探してみよう
設計に答えはないから探してみよう
 
iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有iOS 11からのアプリ間ファイル共有
iOS 11からのアプリ間ファイル共有
 
iOS 11からのアプリ間ファイル共有_公開用
iOS 11からのアプリ間ファイル共有_公開用iOS 11からのアプリ間ファイル共有_公開用
iOS 11からのアプリ間ファイル共有_公開用
 

Recently uploaded

Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 

Recently uploaded (20)

Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 

Xcode Table View Data Source

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23. class TimelineTableViewController: UITableViewController { var tweets: [Tweet] = [] func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return tweets.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { return UITableViewCell() } }
  • 24. class TimelineTableViewController: UITableViewController { private let timelineDataSource = TimelineDataSource() private let timelineDelegate = TimelineDelegate() override func viewDidLoad() { tableView.dataSource = timelineDataSource tableView.delegate = timelineDelegate
 }
  • 25. class TimelineDataSource: NSObject, UITableViewDataSource { var tweets: [Tweet] = [] func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return tweets.count }
  • 26. import UIKit class KobitoSettingViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UICollectionViewDelegateFlowLayout, KobitoCollectionViewCellDelegate { var delegate: BackDelegate? @IBOutlet weak var kobitoMediumImageView: UIImageView! @IBOutlet weak var kobitoNameLabel: UILabel! @IBOutlet weak var collectionView: UICollectionView! @IBOutlet weak var backButton: UIButton! @IBOutlet weak var gotchaButton: UIButton! var isShowedKobitoDetailView = false var currentSelectedIndex: Int { return KobitoManager.sharedManager.currentKobito.type.rawValue } override func viewDidLoad() { backButton.imageView?.contentMode = .ScaleAspectFit gotchaButton.imageView?.contentMode = .ScaleAspectFit kobitoMediumImageView.image = KobitoManager.sharedManager.currentKobito.type.miniImage kobitoNameLabel.text = KobitoManager.sharedManager.currentKobito.type.name automaticallyAdjustsScrollViewInsets = false var cellSide:CGFloat = 0 var lrMargin:CGFloat = 0 var tbMargin:CGFloat = 0 // これはした方がいいかも. if collectionView.frame.height/2 < collectionView.frame.width/3 { tbMargin = 4 cellSide = (collectionView.frame.size.height - (tbMargin * 4)) / 2 lrMargin = (collectionView.frame.size.width - (cellSide * 3)) / 6 }else { lrMargin = 2 cellSide = (collectionView.frame.size.width - (lrMargin * 6)) / 3 tbMargin = (collectionView.frame.size.height - (cellSide * 2)) / 4 } let layout = UICollectionViewFlowLayout() layout.itemSize = CGSize(width: cellSide, height: cellSide) layout.sectionInset = UIEdgeInsets(top: tbMargin, left: lrMargin, bottom: tbMargin, right: lrMargin) collectionView.collectionViewLayout = layout collectionView.delegate = self collectionView.dataSource = self } override func viewDidAppear(animated: Bool) { showCurrentSelectedMark() } func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat { return 12 } func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAtIndex section: Int) -> CGFloat { return 0 } func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int { return 1 } func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return 6 }
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32. class Timeline { private var tweets: [Tweet] = [] init(tweets: [Tweet]) { self.tweets = tweets } var numberOfTweet: Int { return tweets.count } subscript(index: Int) -> Tweet { return tweets[index] } private func insertTweetAtIndex(tweet: Tweet, index: Int) { tweets.insert(tweet, atIndex: index) }
  • 33. class TimelineDataSource: NSObject, UITableViewDataSource { var timeline: Timeline = Timeline(tweets: []) func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return timeline.numberOfTweet }
  • 34.
  • 35.
  • 36. struct Timeline { private var tweets: [Tweet] = [] init(tweets: [Tweet]) { self.tweets = tweets } var numberOfTweet: Int { return tweets.count } subscript(index: Int) -> Tweet { return tweets[index] }
  • 37. private func insertTweetAtIndex(tweet: Tweet, index: Int) -> Timeline { var mutableTweets = tweets mutableTweets.insert(tweet, atIndex: index) return Timeline(tweets: mutableTweets) }
  • 38. func favoriteTweetAtIndex(index: Int) -> Timeline { let cacheTweet = items[index] let tweet = Tweet( id: cacheTweet.id, text: cacheTweet.text, favorited: !cacheTweet.favorited, retweeted: cacheTweet.retweeted, user: cacheTweet.user) return deleteItemAtIndex(index).insertItemAtIndex(tweet, index: index) }
  • 39.
  • 40.
  • 41. private func insertTweetAtIndex(tweet: Tweet, index: Int) -> Timeline { var mutableTweets = tweets mutableTweets.insert(tweet, atIndex: index) return Timeline(tweets: mutableTweets) }
  • 42. private func insertItemAtIndex(item: Item, index: Int) -> Timeline { var mutableItems = Items mutableItems.insert(item, atIndex: index) return Timeline(tweets: mutableItems) }
  • 43. protocol DataType { associatedtype ItemType var items: [ItemType] { get } var numberOfItems: Int { get } subscript(index: Int) -> ItemType { get } func insertItemAtIndex(item: ItemType, index: Int) -> Self func deleteItemAtIndex(index: Int) -> Self }
  • 44. protocol DataType { associatedtype ItemType var items: [ItemType] { get } var numberOfItems: Int { get } subscript(index: Int) -> ItemType { get } func insertItemAtIndex(item: ItemType, index: Int) -> Self func deleteItemAtIndex(index: Int) -> Self }
  • 45. protocol DataType { associatedtype ItemType var items: [ItemType] { get } var numberOfItems: Int { get } subscript(index: Int) -> ItemType { get } func insertItemAtIndex(item: ItemType, index: Int) -> Self func deleteItemAtIndex(index: Int) -> Self }
  • 46. protocol DataType { associatedtype ItemType var items: [ItemType] { get } var numberOfItems: Int { get } subscript(index: Int) -> ItemType { get } func insertItemAtIndex(item: ItemType, index: Int) -> Self func deleteItemAtIndex(index: Int) -> Self }
  • 47. struct Timeline: DataType { typealias ItemType = Tweet var items: [ItemType] = [] init(items: [ItemType]) { self.items = items } var numberOfItems: Int { return items.count } subscript(index: Int) -> Tweet { return items[index] } func insertItemAtIndex(item: ItemType, index: Int) -> Timeline { var mutableItems = items mutableItems.insert(item, atIndex: index) return Timeline(items: mutableItems) }
  • 48. func favoriteTweetAtIndex(index: Int) -> Timeline { let cacheTweet = items[index] let tweet = Tweet( id: cacheTweet.id, text: cacheTweet.text, favorited: !cacheTweet.favorited, retweeted: cacheTweet.retweeted, user: cacheTweet.user) return deleteItemAtIndex(index).insertItemAtIndex(tweet, index: index) }
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 58. 💪