Blending Culture in Twitter Client

Preview:

Citation preview

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 } func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {

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‾

💪

Recommended