QuickSwitch WatchKit Extension/DesignatorColorController.swift
/* |
Copyright (C) 2016 Apple Inc. All Rights Reserved. |
See LICENSE.txt for this sample’s licensing information |
Abstract: |
The `DesignatorColorController` allows selection of a designator from the NATO phonetic alphabet. `DesignatorColorController` has a delegate used to provide the user's selection back to the parent controller. The `ColorRowController` serves as the row controller for the table in the `DesignatorColorController`. Additionally, a `DesignatorColorContext` class is provided for use by segues transitioning to this controller. |
*/ |
import WatchKit |
import WatchConnectivity |
class ColorRowController: NSObject { |
// MARK: Properties |
@IBOutlet weak var textLabel: WKInterfaceLabel! |
@IBOutlet weak var checkBox: WKInterfaceImage! |
// MARK: Methods |
func setText(_ text: String) { |
textLabel.setText(text) |
} |
func setCheckBoxImage(named imageName: String) { |
checkBox.setImageNamed(imageName) |
} |
} |
class DesignatorColorContext { |
weak var delegate: DesignatorColorControllerDelegate? |
let selectedRow: String |
init(selectedRow: String, delegate: DesignatorColorControllerDelegate) { |
self.selectedRow = selectedRow |
self.delegate = delegate |
} |
} |
protocol DesignatorColorControllerDelegate: class { |
func colorController(_ controller: DesignatorColorController, didSelect designatorColor: String) |
} |
class DesignatorColorController: WKInterfaceController { |
// MARK: Properties |
let rows = ["Blue", "Gray", "Green", "Orange", "Red", "Yellow"] |
@IBOutlet weak var colorTable: WKInterfaceTable! |
weak var delegate: DesignatorColorControllerDelegate? |
override init() { |
super.init() |
colorTable.setNumberOfRows(6, withRowType: "ColorRowType") |
rows.enumerated().forEach { (index, item) in |
let row = self.colorTable.rowController(at: index) as! ColorRowController |
row.setText(item) |
row.setCheckBoxImage(named: "\(item.lowercased())-unchecked") |
} |
} |
override func awake(withContext context: Any?) { |
precondition(context is DesignatorColorContext, "Expected class of `context` to be `ColorContext`.") |
let designatorColorContext = context as! DesignatorColorContext |
delegate = designatorColorContext.delegate |
let row = colorTable.rowController(at: rows.index(of: designatorColorContext.selectedRow)!) as! ColorRowController |
row.setCheckBoxImage(named: "\(designatorColorContext.selectedRow.lowercased())-checked") |
} |
override func table(_ table: WKInterfaceTable, didSelectRowAt rowIndex: Int) { |
let row = self.colorTable.rowController(at: rowIndex) as! ColorRowController |
let item = rows[rowIndex] |
row.setCheckBoxImage(named: "\(item.lowercased())-checked") |
delegate?.colorController(self, didSelect: item) |
} |
} |
Copyright © 2016 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2016-10-04