Skip to content

Instantly share code, notes, and snippets.

import UIKit
open class SegmentedViewController: UIViewController {
public private(set) var selectedViewControllerIndex = 0
// MARK: - Public variables
/// List of ViewControllers. View Controller Titles are used as segment titles.
public var items = [UIViewController]() {
import UIKit
open class MovieListFetcherViewController: UIViewController {
// MARK: - Variables
public var movieStore = MovieStore.shared
private let listController = ListViewController()
public var endpoint: Endpoint = .nowPlaying {
didSet {
import UIKit
open class MovieListCoordinator: UIViewController {
// MARK: - Variables
let segmentedController = SegmentedViewController()
let topMovieFetcherViewController = MovieListFetcherViewController()
let nowPlayingMovieFetcherViewController = MovieListFetcherViewController()
let popularMovieFetcherViewController = MovieListFetcherViewController()
let upcomingMovieFetcherViewController = MovieListFetcherViewController()
import UIKit
open class ErrorViewController: UIViewController {
// MARK: - Variables
public let errorLabel = UILabel()
// MARK: - Lifecycle
import UIKit
open class LoadingViewController: UIViewController {
// MARK: - Variables
public let activityIndicator = UIActivityIndicatorView(style: .gray)
// MARK: - Lifecycle
open override func viewDidLoad() {
import UIKit
open class ListStateViewController: UIViewController {
public enum State {
case loading
case list([Listable])
case empty(String)
case error(String)
}
import UIKit
open class MovieListFetcherViewController: UIViewController {
// MARK: - Variables
public let listStateController = ListStateViewController()
public let movieStore = MovieStore.shared
public var endpoint: Endpoint = .nowPlaying {
import PlaygroundSupport
import UIKit
@testable import MVCMovieInfoFramework
PlaygroundPage.current.needsIndefiniteExecution = true
NSSetUncaughtExceptionHandler { exception in
print("💥 Exception thrown: \(exception)")
}
import UIKit
open class MovieSearchFetcherViewController: UIViewController {
var service: MovieService = MovieStore.shared
// MARK: - Variables
private let listStateViewController = ListStateViewController()
private let searchController = UISearchController(searchResultsController: nil)
import UIKit
open class MovieSearchViewController: UIViewController, UISearchResultsUpdating {
var service: MovieService = MovieStore.shared
// MARK: - Variables
private let movieSearchFetcherViewController = MovieSearchFetcherViewController()
private let searchController = UISearchController(searchResultsController: nil)