navigationItem.set_BarButton не работает - swift - PullRequest
0 голосов
/ 25 июня 2018

Я реализую скрытую панель поиска.

Все отлично работает, кроме команд, которые возвращают кнопки панели, в функции, которая скрывает панель поиска.

Кроме того, UISearchBar.showCancelButton тоже не работает, поэтому мне пришлось реализовать кнопку отмены вручную. (Я установил делегата для панели поиска на себя)

Вот код:

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

Как я могу исправить эти проблемы?

1 Ответ

0 голосов
/ 26 июня 2018

Оказывается, эти кнопки панели были нулевыми, я изменил розетки на сильные, и теперь это работает. От:

@IBOutlet var weak searchButton: UIBarButtonItem!
@IBOutlet var weak menuButton: UIBarButtonItem!

Кому:

@IBOutlet var searchButton: UIBarButtonItem!
@IBOutlet var menuButton: UIBarButtonItem!
...