Created
December 15, 2016 19:43
-
-
Save anonymous/b5f06b7e394415f74e445693015ebde3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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