Skip to content

Instantly share code, notes, and snippets.

Created December 15, 2016 19:43
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/b5f06b7e394415f74e445693015ebde3 to your computer and use it in GitHub Desktop.
Save anonymous/b5f06b7e394415f74e445693015ebde3 to your computer and use it in GitHub Desktop.
import UIKit
import AVFoundation
import AVKit
class FhtgViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, VideoModelDelegate {
@IBOutlet weak var tableView: UITableView!
var videos:[Video] = [Video]()
var model:VideoModel = VideoModel()
var player: AVPlayer?
var selectedVideo:Video?
var loadingData = false
override func viewDidLoad() {
super.viewDidLoad()
self.model.delegate = self
//self.videos = model.getFeedVideos()
model.getFeedVideos()
self.tableView.dataSource = self
self.tableView.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - VideoModel
func dataReady() {
self.videos = self.model.videoArray
self.tableView.reloadData()
}
// MARK: - TableView
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return (self.view.frame.size.width / 320) * 180
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.videos.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "BasicCell")!
// TITLE:
let videoTitle = videos[indexPath.row].videoTitle
let label = cell.viewWithTag(2) as! UILabel
label.text = videoTitle
// THUMBNAIL:
let videoThumbnailUrlString = videos[indexPath.row].videoThumbnailUrl
let videoThumbnailUrl = URL(string: videoThumbnailUrlString)
if videoThumbnailUrl != nil {
let request = URLRequest(url: videoThumbnailUrl!)
let session = URLSession.shared
let dataTask = session.dataTask(with: request, completionHandler: { (data, response, error) in
DispatchQueue.main.async {
let imageView = cell.viewWithTag(1) as! UIImageView
imageView.image = UIImage(data: data!)
}
})
dataTask.resume()
}
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let url = URL(fileURLWithPath: videos[indexPath.row].videoUrl)
print(url)
self.selectedVideo = self.videos[indexPath.row]
self.performSegue(withIdentifier: "goToDetail", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let detailVideoController = segue.destination as! VideoDetailViewController
detailVideoController.selectedVideo = self.selectedVideo
}
// Load more...
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if !loadingData && indexPath.row == videos.count - 1 {
loadingData = true
refreshResults2()
}
}
func refreshResults2() {
DispatchQueue.main.async {
// this runs on the main queue
self.model.getFeedVideos()
self.videos = self.videos + self.model.videoArray
self.tableView.reloadData()
self.loadingData = false
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment