【发布时间】:2020-01-01 19:27:58
【问题描述】:
总结
当子UIViewController 将UISearchController 嵌入到导航项的搜索控制器中时,UINavigationController 会显示损坏的动画。
仅当我在导航项中设置 UISearchController 时才会发生这种情况。
下图中有2个例子:
- 更改位置
ViewController- 单击Back(设置)按钮时出现动画延迟。 - 自定义
ViewController- 工作正常。
流程
UITableViewController > UIViewController 和 UISearchController 嵌入到导航项中
调查结果
我研究了这种行为,发现了一些描述类似行为但与我设置的行为不完全相同的答案。
尝试通过将导航项搜索控制器设置为 nil 来实施以下帖子中建议的解决方案 - 没有解决此问题:
Broken UISearchBar animation embedded in NavigationItem
代码如下。提前致谢。
class ChangeLocationViewController: UIViewController {
// MARK: - Outlets
@IBOutlet weak var locationBanner: CustomView!
@IBOutlet weak var locationNameLabel: UILabel!
@IBOutlet weak var locationTimeLabel: UILabel!
@IBOutlet weak var mapView: MKMapView!
let loadingBanner = LoadingBanner()
var resultsViewController: GMSAutocompleteResultsViewController?
var searchController: UISearchController?
let locationManager = LocationManager.shared
override func viewDidLoad() {
super.viewDidLoad()
locationManager.locationManagerDelegate = self
GMSPlacesClient.provideAPIKey(AppSettings.googleAPIKey)
self.definesPresentationContext = true;
resultsViewController = GMSAutocompleteResultsViewController()
resultsViewController?.delegate = self
let autoCompletedFilter = GMSAutocompleteFilter()
autoCompletedFilter.type = .city
resultsViewController?.autocompleteFilter = autoCompletedFilter
searchController = UISearchController(searchResultsController: resultsViewController)
searchController?.searchResultsUpdater = resultsViewController
searchController?.hidesNavigationBarDuringPresentation = false
searchController?.searchBar.placeholder = "Search a place".localized
searchController?.delegate = self
// Setting the search controller [when it is not set, everything works great :)]
navigationItem.searchController = searchController
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// Removing the search controller
self.navigationItem.searchController = nil
}
}
【问题讨论】:
-
你试过
self.navigationItem.searchController = nil中的代码viewDidDisappear而不是viewWillDisappear吗? -
相同的结果。谢谢。
标签: ios swift uinavigationcontroller uisearchbar uisearchcontroller