| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- //
- // TextFieldTableViewController.swift
- // Naterade
- //
- // Created by Nathan Racklyeft on 8/30/15.
- // Copyright © 2015 Nathan Racklyeft. All rights reserved.
- //
- import UIKit
- public protocol TextFieldTableViewControllerDelegate: AnyObject {
- func textFieldTableViewControllerDidEndEditing(_ controller: TextFieldTableViewController)
- func textFieldTableViewControllerDidReturn(_ controller: TextFieldTableViewController)
- }
- open class TextFieldTableViewController: UITableViewController, UITextFieldDelegate {
- private weak var textField: UITextField?
- public var indexPath: IndexPath?
- public var placeholder: String?
- public var unit: String?
- public var value: String? {
- didSet {
- delegate?.textFieldTableViewControllerDidEndEditing(self)
- }
- }
- public var contextHelp: String?
- public var keyboardType = UIKeyboardType.default
- public var autocapitalizationType = UITextAutocapitalizationType.sentences
- open weak var delegate: TextFieldTableViewControllerDelegate?
- public convenience init() {
- self.init(style: .grouped)
- }
- open override func viewDidLoad() {
- super.viewDidLoad()
- tableView.cellLayoutMarginsFollowReadableWidth = true
- tableView.register(TextFieldTableViewCell.nib(), forCellReuseIdentifier: TextFieldTableViewCell.className)
- }
- open override func viewDidAppear(_ animated: Bool) {
- super.viewDidAppear(animated)
- textField?.becomeFirstResponder()
- }
- // MARK: - UITableViewDataSource
- open override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return 1
- }
- open override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCell(withIdentifier: TextFieldTableViewCell.className, for: indexPath) as! TextFieldTableViewCell
- textField = cell.textField
- cell.textField.delegate = self
- cell.textField.text = value
- cell.textField.keyboardType = keyboardType
- cell.textField.placeholder = placeholder
- cell.textField.autocapitalizationType = autocapitalizationType
- cell.unitLabel?.text = unit
- return cell
- }
- open override func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
- return contextHelp
- }
- open override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
- if indexPath == IndexPath(row: 0, section: 0), let textField = textField {
- if textField.isFirstResponder {
- textField.resignFirstResponder()
- } else {
- textField.becomeFirstResponder()
- }
- }
- tableView.deselectRow(at: indexPath, animated: true)
- }
- // MARK: - UITextFieldDelegate
- open func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
- value = textField.text
- return true
- }
- open func textFieldShouldReturn(_ textField: UITextField) -> Bool {
- value = textField.text
- textField.delegate = nil
- delegate?.textFieldTableViewControllerDidReturn(self)
- return false
- }
- }
|