Skip to content

Instantly share code, notes, and snippets.

View spadafiva's full-sized avatar

Joe Spadafora spadafiva

View GitHub Profile
class ProfileViewController: UIViewController {
// MARK: - Properties
var mode: Mode = .viewing {
didSet {
updateEditingModeUI()
}
}
// MARK: - Outlets
func updateEditingModeUI() {
nameField.isUserInteractionEnabled = mode.textfieldsEditable
ageField.isUserInteractionEnabled = mode.textfieldsEditable
primaryButton.setTitle ...
secondaryButton.setTitle ...
secondaryButton.isHidden ...
}
func handleSave() {
// perform appropriate validations
enum Mode {
/// ...
var primaryText: String {
switch self {
case .editing: return "Save"
case .viewing: return "Edit"
case .creating: return "Create"
}
}
enum Mode {
case viewing
case editing
case creating
var textfieldsEditable: Bool {
switch self {
case .editing, .creating: return true
case .viewing: return false
}
@IBAction func secondaryButtonPressed(sender: UIButton) {
switch mode {
case .viewing: break // This button will be hidden
case .creating: backToSignup() // I'm not going to define the implementation for these
case .editing: revertTextfields() // functions here but you can imagine that it
// what they both would do
}
}
@IBAction func primaryButtonPressed(sender: UIButton) {
switch mode {
case .viewing: mode = .editing
case .editing, .creating: handleSave()
}
}
class ProfileViewController: UIViewController {
// Mark: - Properties
var mode: Mode = .viewing {
didSet {
updateEditingModeUI()
}
}
// ... (hidden)
}
class ProfileViewController: UIViewController {
// Mark Outlets
@IBAOutlet weak var nameField: UITextField!
@IBAOutlet weak var ageField: UITextField!
@IBAOutlet weak var primaryButton: UIButton!
@IBAOutlet weak var secondaryButton: UIButton!
// Mark Button Actions
@IBAction func primaryButtonPressed(sender: UIButton) {
enum Mode {
case viewing
case editing
case creating
var textfieldsEditable: Bool {
switch self {
case .editing, .creating: return true
case .viewing: return false
}
enum Mode {
case viewing
case editing
case creating
}