我有这顶NavigationController
的帽子,为其NavigationBar
启用了大标题。根ViewController
有一个SearchController
,并且在ViewController
的{{1}}中hidesSearchBarWhenScrolling设置为True,因为我不希望NavigationItem
总是可见。 SearchBar
有一个ViewController
,当您点击其中一个项目时,将使用情节提要脚本将相同的TableView
的新实例推送到导航堆栈中。但是,在查看当前ViewController
与新ViewController
之间的过渡时,您会发现动画看起来不正确:将新ViewController
移动到SearchBar
中空,只显示其背景。当新的ViewController
最终完全可见时,SearchBar
将消失而没有任何动画。
这就是我添加SearchController
的方式(这里没什么好看的):
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let searchController = UISearchController(searchResultsController: nil)
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = true
}
}
因此,从“一个”导航到“两个”时看起来像这样:
UISearchController / UINavigationBar shows broken animation when used within UINavigationController
有没有办法使它看起来更好?当然,在新的ViewController
中,SearchBar
最初应该不可见,因此必须以某种方式消失。但是我认为也许应该以某种方式淡出旧SearchBar
上的ViewController
而不是呆在那里,然后在过渡到新ViewController
时突然隐藏。希望我在这里做错了...
感谢大家,祝大家圣诞快乐,
彼得
答案 0 :(得分:0)
尝试在viewWillDissappear方法中将搜索控制器设置为nil。
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationItem.searchController = nil
}
答案 1 :(得分:0)
好吧,我终于找到了非常有用的东西,在问我问题之前我找不到:
Broken UISearchBar animation embedded in NavigationItem
太可惜了,这是从iOS 11开始就知道的,但仍然没有解决。