当前位置: 首页 > 面试题库 >

在UISearchController中的搜索栏上隐藏“取消”按钮

马庆
2023-03-14
问题内容

我试图在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
}

这种方法可行,但是在隐藏它之前会短暂显示“取消”按钮,这是不理想的。有什么建议?


问题答案:

我最终对这两个子类都进行了子类化,UISearchBarUISearchController建议如下:

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
        }
    }
}


 类似资料:
  • 问题内容: 注意1: 此问题与在更新的表视图之外添加UISearchController的搜索栏有关,而不是作为表视图的标题。 注意2: 一些反复试验使我找到了解决方案。 我是iOS开发的新手,正在努力使用UISearchController类。我有一个视图控制器,在我的视图控制器视图中,我计划在表格视图上方有一个搜索栏。我希望搜索栏链接到UISearchController。由于接口生成器没有U

  • 在 !insertmacro MUI_PAGE_FINISH 前面加入如下句子 !define MUI_PAGE_CUSTOMFUNCTION_SHOW MyFunc 然后创建 MyFunc 过程。 以下是禁止 取消 按钮: Function MyFunc GetDlgItem $0 $HWNDPARENT 2 EnableWindow $0 0 FunctionEnd 以下是隐藏 取消

  • ap.hideOptionButton() 隐藏导航栏右侧按钮。 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <button class="btn btn-default">显示多个按钮</button> <button

  • 在我的项目中,我可以在iPhone上隐藏状态栏。 但它不适用于我的iPad我怎么能在iPad上隐藏状态栏?

  • 问题内容: 如何在ios 9中隐藏状态栏? 现在不推荐使用: 问题答案: 斯威夫特3 更改为 删除 更改为 之所以可行,是因为计算变量具有getter函数,因此您之前实现的函数只是变成了getter函数 2016年起:简单的事物 在您的info.plist上,为statusBar隐藏添加以下两个属性 查看基于控制器的状态栏外观(布尔值:否) 状态栏最初是隐藏的(布尔值:是) 按来源 要么 旧答案!

  • Since 8.0 hideOptionMenu 隐藏标题栏右边的按钮属性 使用方法 AlipayJSBridge.call('hideOptionMenu'); 代码演示 请参考setOptionMenu