Skip to content

Instantly share code, notes, and snippets.

@eofster
Created December 15, 2015 13:03
Show Gist options
  • Save eofster/1586d2f917f95c0afab9 to your computer and use it in GitHub Desktop.
Save eofster/1586d2f917f95c0afab9 to your computer and use it in GitHub Desktop.
GPS track summary view controller with event handling
import UIKit
class TrackSummaryViewController: UIViewController {
let observer: TrackSummaryViewObserver
private var trackID: Int!
@IBOutlet private(set) var nameField: UITextField!
@IBOutlet private(set) var dateLabel: UILabel!
@IBOutlet private(set) var distanceLabel: UILabel!
init(observer: TrackSummaryViewObserver) {
self.observer = observer
super.init(nibName: "TrackSummaryViewController", bundle: nil)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) is not supported")
}
override func viewDidLoad() {
super.viewDidLoad()
observer.viewShouldReloadData(self)
}
}
extension TrackSummaryViewController: TrackSummaryView {
func setTrackID(trackID: Int) {
self.trackID = trackID
}
func setName(name: String) {
nameField.text = name
}
func setDate(date: String) {
dateLabel.text = date
}
func setDistance(distance: String) {
distanceLabel.text = distance
}
}
extension TrackSummaryViewController: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
func textFieldDidEndEditing(textField: UITextField) {
observer.view(self, didChangeTrackName: textField.text!, forTrackWithID: trackID)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment