Skip to content

Instantly share code, notes, and snippets.

import UIKit
/// Extension used to facilitate adding child viewControllers in a viewController
public extension UIViewController {
/// Embeds a view controller and also adds it's view in the view hierarchay
///
/// - Parameter viewController: ViewController to add
func add(asChildViewController viewController: UIViewController, anchored: Bool = true, subview: UIView? = nil) {
let someView: UIView = subview ?? view
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
window?.backgroundColor = UIColor.white
window?.makeKeyAndVisible()
import UIKit
open class MovieSearchViewController: UIViewController, UISearchResultsUpdating {
var service: MovieService = MovieStore.shared
// MARK: - Variables
private let movieSearchFetcherViewController = MovieSearchFetcherViewController()
private let searchController = UISearchController(searchResultsController: nil)
import UIKit
open class MovieSearchFetcherViewController: UIViewController {
var service: MovieService = MovieStore.shared
// MARK: - Variables
private let listStateViewController = ListStateViewController()
private let searchController = UISearchController(searchResultsController: nil)
import PlaygroundSupport
import UIKit
@testable import MVCMovieInfoFramework
PlaygroundPage.current.needsIndefiniteExecution = true
NSSetUncaughtExceptionHandler { exception in
print("💥 Exception thrown: \(exception)")
}
import UIKit
open class MovieListFetcherViewController: UIViewController {
// MARK: - Variables
public let listStateController = ListStateViewController()
public let movieStore = MovieStore.shared
public var endpoint: Endpoint = .nowPlaying {
import UIKit
open class ListStateViewController: UIViewController {
public enum State {
case loading
case list([Listable])
case empty(String)
case error(String)
}
import UIKit
open class LoadingViewController: UIViewController {
// MARK: - Variables
public let activityIndicator = UIActivityIndicatorView(style: .gray)
// MARK: - Lifecycle
open override func viewDidLoad() {
import UIKit
open class ErrorViewController: UIViewController {
// MARK: - Variables
public let errorLabel = UILabel()
// MARK: - Lifecycle
import UIKit
open class MovieListCoordinator: UIViewController {
// MARK: - Variables
let segmentedController = SegmentedViewController()
let topMovieFetcherViewController = MovieListFetcherViewController()
let nowPlayingMovieFetcherViewController = MovieListFetcherViewController()
let popularMovieFetcherViewController = MovieListFetcherViewController()
let upcomingMovieFetcherViewController = MovieListFetcherViewController()