self.definesPresentationContext = true: 导致黑屏?
self.definesPresentationContext = true: leads to black screen?
let searchController = UISearchController(searchResultsController: nil)
override func viewDidLoad() {
super.viewDidLoad()
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
// searchController.definesPresentationContext = true
self.definesPresentationContext = true
当搜索栏处于活动状态且其中包含文本时,我转到另一个选项卡然后返回,除了实际的搜索栏之外,控制器是黑色的。当我取消并清空搜索文本字段时,一切恢复正常。
我的问题与这个问题基本相同:
除了如您所见,那个答案没有解决我的问题。如果我将 self 更改为 searchController,则解决它的方法是:searchController.definesPresentationContext = true。但这会导致搜索栏出现在我选择的下一个控制器中。很迷茫,求助
我正在使用嵌入在导航控制器和标签栏控制器中的表格视图。搜索处于活动状态时未调用 viewDidDisappear。
这本身不是解决方案,而是一种解决方法,这个 stackeroverflow post 帮助:
。我不确定这是否是某种苹果错误。
显然我根本不应该使用 self.definesPresentationContext = true。这使我的搜索出现在我的所有选项卡中。但至少 viewDidDisappear 被调用了。
在 viewDidDisappear 中,我可以使用 searchController.searchBar.hidden = true 隐藏搜索栏,然后在 viewDidAppear 中再次显示搜索栏。
在AppDelegate.swift
window?.backgroundColor = UIColor.white
let searchController = UISearchController(searchResultsController: nil)
override func viewDidLoad() {
super.viewDidLoad()
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
// searchController.definesPresentationContext = true
self.definesPresentationContext = true
当搜索栏处于活动状态且其中包含文本时,我转到另一个选项卡然后返回,除了实际的搜索栏之外,控制器是黑色的。当我取消并清空搜索文本字段时,一切恢复正常。
我的问题与这个问题基本相同:
除了如您所见,那个答案没有解决我的问题。如果我将 self 更改为 searchController,则解决它的方法是:searchController.definesPresentationContext = true。但这会导致搜索栏出现在我选择的下一个控制器中。很迷茫,求助
我正在使用嵌入在导航控制器和标签栏控制器中的表格视图。搜索处于活动状态时未调用 viewDidDisappear。
这本身不是解决方案,而是一种解决方法,这个 stackeroverflow post 帮助:
显然我根本不应该使用 self.definesPresentationContext = true。这使我的搜索出现在我的所有选项卡中。但至少 viewDidDisappear 被调用了。
在 viewDidDisappear 中,我可以使用 searchController.searchBar.hidden = true 隐藏搜索栏,然后在 viewDidAppear 中再次显示搜索栏。
在AppDelegate.swift
window?.backgroundColor = UIColor.white