*任何人都知道我们如何在与 searchbarcontroller 一起使用时始终显示导航栏项目(例如完成)? #编辑1
import Foundation
import UIKit
class TradeSelectionController: UITableViewController, UISearchResultsUpdating, UISearchBarDelegate {
var searchController : UISearchController!
var isSearching = false
override func viewDidLoad() {
super.viewDidLoad()
addCancelBarItemWithBackButton(.present)
setup()
searchBarSetup()
}
func searchBarSetup() {
tableView.allowsMultipleSelection = true
tableView.estimatedRowHeight = tableView.rowHeight
tableView.rowHeight = UITableView.automaticDimension
searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.searchBar.delegate = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.autocapitalizationType = .none
searchController.searchBar.showsCancelButton = false
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = true
}
private func setup() {
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "TradeSelectionTableViewCell")
tableView.separatorStyle = .none
self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneAction))
self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(cancelAction))
}
func updateSearchResults(for searchController: UISearchController) {
*if searchController.isActive {
print("search controller active")
}else{
dismiss(animated: true, completion: nil)
}
tableView.reloadData()*
}
@objc private func cancelAction(_ sender: Any?) {
dismiss(animated: true, completion: nil)
}
@objc private func doneAction(_ sender: Any?) {
dismiss(animated: true, completion: nil)
}
}
我使用代码使用 searchbarcontroller,任何人都知道更好的方法。 谢谢*