Skip to content

Instantly share code, notes, and snippets.

@carstenhag
Created July 18, 2018 19:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save carstenhag/569441eab84da4819a31430549b164a0 to your computer and use it in GitHub Desktop.
Save carstenhag/569441eab84da4819a31430549b164a0 to your computer and use it in GitHub Desktop.
//
// ScannerTestTableViewController.swift
// incidents4
//
// Created by chag0709 on 18.07.18.
// Copyright © 2018 SAP. All rights reserved.
//
import UIKit
import SAPFiori
class ScannerTestTableViewController: UITableViewController, UISearchResultsUpdating {
var searchController: FUISearchController?
var scannedBarcodes: [String] = ["Test QR Code", "103050"]
var filteredBarcodes: [String] = []
var isFiltered: Bool = false
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(FUIObjectTableViewCell.self, forCellReuseIdentifier: "FUIObjectTableViewCell")
searchController = FUISearchController(searchResultsController: nil)
searchController!.searchResultsUpdater = self
searchController!.searchBar.placeholderText = "Search The List"
searchController!.searchBar.isBarcodeScannerEnabled = true
searchController!.searchBar.barcodeScanner?.scanResultTransformer = { (scanString) -> String in
self.scannedBarcodes.append(scanString)
return scanString
}
tableView.tableHeaderView = searchController?.searchBar
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return isFiltered ? self.filteredBarcodes.count : self.scannedBarcodes.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "FUIObjectTableViewCell", for: indexPath)
guard let objectCell = cell as? FUIObjectTableViewCell else {
return cell
}
objectCell.headlineText = isFiltered ? filteredBarcodes[indexPath.row] : scannedBarcodes[indexPath.row]
objectCell.statusText = String(indexPath.row)
return objectCell
}
func updateSearchResults(for searchController: UISearchController) {
guard let searchString = searchController.searchBar.text, !searchString.isEmpty else {
self.isFiltered = false
self.filteredBarcodes.removeAll()
self.tableView.reloadData()
return
}
self.isFiltered = true
self.filteredBarcodes = scannedBarcodes.filter({
return $0.localizedCaseInsensitiveContains(searchString)
})
self.tableView.reloadData()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment