我偶然发现了一些小故障。第一次加载此视图时,一切正常:
如果我转到下一个视图,我的UINavigationBar
如下所示:
如果现在按回去,则无法按第一张图像中显示的scopeButton
。
我知道,如果我移除UISearchBar
(第二张图片),则可以按下scopeButtons
(第一张图片)。
这是我的第一张图片代码:
var searchBar = UISearchBar()
override func viewDidLoad() {
secondContainerView.isHidden = true
searchBar.delegate = self
searchBar.placeholder = "Search"
searchBar.scopeButtonTitles = ["0", "1"]
searchBar.tintColor = UIColor.white
searchBar.barTintColor = UIColor(red: 105/255, green: 185/255,
blue: 114/255, alpha: 1.00)
navigationItem.titleView = searchBar
}
这是第二张图片的代码:
var searchBar = UISearchBar()
override func viewDidLoad() {
searchBar.delegate = self
searchBar.placeholder = "Search"
navigationItem.titleView = searchBar
}
我发现,如果这样做,它会起作用:
override func viewWillDisappear(_ animated: Bool) {
searchBar.removeFromSuperview()
}
可悲的是,这又带来了另一个问题,当我执行swipeGesture
返回并停留在当前视图时,UISearchBar
就消失了。
修改:
如果我点击后退按钮,scopItems
将不会响应,但是在滑动时它会起作用:
override func viewWillAppear(_ animated: Bool) {
navigationItem.titleView = searchBar
}
override func viewWillDisappear(_ animated: Bool) {
navigationItem.titleView = nil
}
override func viewDidAppear(_ animated: Bool) {
navigationItem.titleView = searchBar
}