我试图隐藏UISearchController中搜索栏的“取消”按钮,但不幸的是在viewDidLoad()中设置以下内容不起作用:
override func viewDidLoad() { super.viewDidLoad() searchResultsTableController = UITableViewController() searchResultsTableController.tableView.delegate = self searchController = UISearchController(searchResultsController: searchResultsTableController) searchController.searchResultsUpdater = self searchController.searchBar.sizetoFit() searchResultsView.tableHeaderView = searchController.searchBar searchController.delegate = self searchController.dimsBackgroundDuringPresentation = false searchController.searchBar.delegate = self searchController.searchBar.searchBarStyle = .Minimal searchController.searchBar.showsCancelButton = false definesPresentationContext = true }
func didPresentSearchController(searchController: UISearchController) { searchController.searchBar.showsCancelButton = false }
解决方法
我按照建议继承了UISearchBar和UISearchController的子类:
CustomSearchBar.swift
import UIKit class CustomSearchBar: UISearchBar { override func layoutSubviews() { super.layoutSubviews() setShowsCancelButton(false,animated: false) } }
CustomSearchController.swift
import UIKit class CustomSearchController: UISearchController,UISearchBarDelegate { lazy var _searchBar: CustomSearchBar = { [uNowned self] in let result = CustomSearchBar(frame: CGRectZero) result.delegate = self return result }() override var searchBar: UISearchBar { get { return _searchBar } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。