Projects/VideoLooper/VideoLooper/SetupViewController.swift
/*  | 
Copyright (C) 2016 Apple Inc. All Rights Reserved.  | 
See LICENSE.txt for this sample’s licensing information  | 
Abstract:  | 
View to allow the user to configure the video looping playback and select the method to perform the looping.  | 
*/  | 
import UIKit  | 
class SetupViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { | 
// MARK: SegueHandlerType  | 
    enum SegueIdentifier: String { | 
case queuePlayerLooper = "QueuePlayerLooper"  | 
case playerLooper = "PlayerLooper"  | 
}  | 
// MARK: Properties  | 
var mediaFileList = [String]()  | 
var mediaURLList = [URL]()  | 
var loopOptionStringList = [String]()  | 
var loopOptionValueList = [Int]()  | 
var selectedMediaFileIndex = 0  | 
var selectedLoopOptionIndex = 0  | 
// MARK: Interface Builder outlets  | 
@IBOutlet weak var filePicker: UIPickerView!  | 
@IBOutlet weak var loopCountPicker: UIPickerView!  | 
// MARK: UIViewController  | 
    override func viewDidLoad() { | 
super.viewDidLoad()  | 
mediaFileList = ["Sweep", "BipBop"]  | 
mediaURLList = [URL(fileURLWithPath:Bundle.main.path(forResource: "maskOff", ofType: "mov")!),  | 
URL(fileURLWithPath:Bundle.main.path(forResource: "ChoppedBipBop", ofType: "m4v")!)]  | 
loopOptionStringList = ["Infinite", "2", "3", "5", "7", "10"]  | 
loopOptionValueList = [-1, 2, 3, 5, 7, 10]  | 
filePicker.dataSource = self  | 
filePicker.delegate = self  | 
loopCountPicker.dataSource = self  | 
loopCountPicker.delegate = self  | 
}  | 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { | 
guard let looperViewController = segue.destination as? LooperViewController,  | 
let identifier = segue.identifier,  | 
let segueIdentifier = SegueIdentifier(rawValue: identifier)  | 
        else { | 
return  | 
}  | 
let videoURL = mediaURLList[selectedMediaFileIndex]  | 
let loopCount = loopOptionValueList[selectedLoopOptionIndex]  | 
        switch segueIdentifier { | 
case .queuePlayerLooper:  | 
looperViewController.looper = QueuePlayerLooper(videoURL: videoURL, loopCount: loopCount)  | 
case .playerLooper:  | 
looperViewController.looper = PlayerLooper(videoURL: videoURL, loopCount: loopCount)  | 
}  | 
}  | 
// MARK: UIPickerViewDataSource  | 
    func numberOfComponents(in pickerView: UIPickerView) -> Int { | 
return 1  | 
}  | 
    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { | 
        switch pickerView { | 
case filePicker:  | 
return mediaFileList.count  | 
case loopCountPicker:  | 
return loopOptionStringList.count  | 
default:  | 
return 0  | 
}  | 
}  | 
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { | 
        switch pickerView { | 
case filePicker:  | 
return mediaFileList[row]  | 
case loopCountPicker:  | 
return loopOptionStringList[row]  | 
default:  | 
return nil  | 
}  | 
}  | 
// MARK: UIPickerViewDelegate  | 
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { | 
        switch pickerView { | 
case filePicker:  | 
selectedMediaFileIndex = row  | 
case loopCountPicker:  | 
selectedLoopOptionIndex = row  | 
default:  | 
                fatalError("Picker selected unknown row \(row) in component \(component)") | 
}  | 
}  | 
}  | 
Copyright © 2016 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2016-09-13