ios - self.definesPresentationContext = true : leads to black screen?

标签 ios swift screen uisearchcontroller searchbar

    let searchController = UISearchController(searchResultsController: nil)

override func viewDidLoad() {
    super.viewDidLoad()

    searchController.searchResultsUpdater = self
    searchController.dimsBackgroundDuringPresentation = false

  //  searchController.definesPresentationContext = true
    self.definesPresentationContext = true

当搜索栏处于事件状态且其中包含文本时,我转到另一个选项卡然后返回,除了实际的搜索栏之外, Controller 是黑色的。当我取消并清空搜索文本字段时,一切恢复正常。 我的问题与这个问题基本相同:UISearchController causes black screen Swift 2.0

除了如您所见,该答案并未解决我的问题。如果我将 self 更改为 searchController,则解决它的方法是:searchController.definesPresentationContext = true。但这会导致搜索栏出现在我选择的下一个 Controller 中。很迷茫,求助。

我正在使用嵌入在导航 Controller 和标签栏 Controller 中的表格 View 。当搜索处于事件状态时,不会调用 viewDidDisappear。

最佳答案

这不是解决方案本身,而是一种解决方法,这个 stackeroverflow 帖子帮助: TableView with SearchController - DEINIT not called .我不确定这是否是某种苹果错误。

显然我根本不应该使用 self.definesPresentationContext = true。这使我的搜索出现在我的所有选项卡中。但至少调用了 viewDidDisappear。

在 viewDidDisappear 中,我可以使用 searchController.searchBar.hidden = true 隐藏搜索栏,然后在 viewDidAppear 中再次显示搜索栏。

关于ios - self.definesPresentationContext = true : leads to black screen?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35943496/

相关文章:

ios - 如何调用 didFinishLaunchingWithOptions 中的对象?

ios - 将所有 TextField 委托(delegate)添加到 UIView 的简单方法?

android - 可用的最小宽度量词

ios - 在 PageTabViewStyle (SwiftUI 2.0) 或 PageViewController/PageView (带有 UIKit 界面) 上显示部分上一个和下一个项目

java - 应用程序在 Android 3.0 平板电脑上缩小

java - 如何检测具有多个显示器的系统中的屏幕位置?

ios - 容器 View Controller 中的 IBAction

ios - Tesseract OCR iOS 图片格式

swift - 在 Swift 中将字符串转换为日期

ios - removeFromSuperview() 不工作