我正在实现一个隐藏的搜索栏。
一切正常,除了隐藏搜索栏的功能中需要带回栏按钮的命令之外。
此外,UISearchBar.showCancelButton 也不起作用,所以我必须手动实现取消按钮。 (我已将搜索栏的委托(delegate)设置为 self)
这是代码:
func dismissSearch() {
searchBar.text = ""
view.endEditing(true)
tagSearchResults = [Tag]()
TagSearchFeed?.collectionView.reloadData()
searchResultsContainer.isHidden = true
hideSearchBar()
}
func showSearchBar() {
searchBar.alpha = 0
navigationItem.titleView = searchBar
let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(searchBarCancelButtonClicked))
cancelButton.tintColor = .white
navigationItem.setRightBarButton(cancelButton, animated: true)
navigationItem.setLeftBarButton(nil, animated: true)
UIView.animate(withDuration: 0.5, animations: {
self.searchBar.alpha = 1
}, completion: { finished in
self.searchBar.becomeFirstResponder()
})
self.searchResultsContainer.isHidden = false
}
func hideSearchBar() {
navigationItem.setRightBarButton(self.searchButton, animated: true)
navigationItem.setLeftBarButton(self.menuButton, animated: true)
UIView.animate(withDuration: 0.3, animations: {
self.navigationItem.titleView = nil
}, completion: { finished in
})
}
@objc func searchBarCancelButtonClicked() {
dismissSearch()
}
如何解决这些问题?
最佳答案
事实证明,那些栏按钮项目为零,我将 socket 更改为强,现在它可以工作了。 来自:
@IBOutlet var weak searchButton: UIBarButtonItem!
@IBOutlet var weak menuButton: UIBarButtonItem!
致:
@IBOutlet var searchButton: UIBarButtonItem!
@IBOutlet var menuButton: UIBarButtonItem!
关于ios - navigationItem.set_BarButton 不起作用 - 快速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51021051/