【问题标题】:self.definesPresentationContext = true: leads to black screen?self.definesPresentationContext = true: 导致黑屏?
【发布时间】:2016-03-11 15:04:26
【问题描述】:
    let searchController = UISearchController(searchResultsController: nil)

override func viewDidLoad() {
    super.viewDidLoad()

    searchController.searchResultsUpdater = self
    searchController.dimsBackgroundDuringPresentation = false

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

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

除了那个答案不能解决我的问题,你可以看到。如果我将 self 更改为 searchController,那么解决它的方法是:searchController.definesPresentationContext = true。但这会导致搜索栏出现在我选择的下一个控制器中。很困惑,请帮忙。

我正在使用嵌入在导航控制器和标签栏控制器中的表格视图。搜索处于活动状态时不会调用 viewDidDisappear。

【问题讨论】:

    标签: ios swift screen uisearchcontroller searchbar


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      在 AppDelegate.swift 中

      window?.backgroundColor = UIColor.white
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-08
        • 2012-03-20
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多