以编程方式将UISearchController添加到swift 2中的UITableView标头

时间:2016-04-17 13:20:00

标签: ios uitableview swift2 uisearchcontroller

在我的视图控制器的先前版本(基于故事板)中,搜索栏运行良好。 在100%以编程方式定义的当前版本(我删除了所有故事板引用)中,搜索栏已消失。 我试图了解问题所在,没有成功。有什么想法吗?

以下是错误的代码段:

let resultSearchController = UISearchController()

override public func viewDidLoad() {
    super.viewDidLoad()

    // No nav bar
    navigationController?.navigationBar.hidden = true

    // — Add table view
    view.addSubview(tableView)
    tableView.delegate = self
    tableView.dataSource = self
    tableView.translatesAutoresizingMaskIntoConstraints = false
    tableView.leftAnchor.constraintEqualToAnchor(view.leftAnchor, constant: 0).active = true
    tableView.rightAnchor.constraintEqualToAnchor(view.rightAnchor, constant: 0).active = true
    tableView.bottomAnchor.constraintEqualToAnchor(view.bottomAnchor, constant: 0).active = true


    // Add search bar as a the table header

    resultSearchController.dimsBackgroundDuringPresentation = false
    resultSearchController.definesPresentationContext = true
    resultSearchController.hidesNavigationBarDuringPresentation = false

    resultSearchController.searchResultsUpdater = self
    resultSearchController.searchBar.sizeToFit()
    resultSearchController.searchBar.delegate = self
    tableView.tableHeaderView = resultSearchController.searchBar

    /// Add refresh control
    refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
    refreshControl.addTarget(self, action: #selector(BigHeadViewController.refreshTable), forControlEvents: UIControlEvents.ValueChanged)
    tableView.addSubview(refreshControl)  
}

1 个答案:

答案 0 :(得分:0)

我认为问题可能是第一行。你必须指定“searchResultsController”作为初始化的一部分 - 即使它是零(搜索到位)。尝试

let resultSearchController = UISearchController(searchResultsController:nil)