self.definesPresentationContext = true:导致黑屏?

时间:2016-03-11 15:04:27

标签: 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

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

除了那个答案并没有解决我的问题,你可以看到。解决它的是如果我将self更改为searchController,因此:searchController.definesPresentationContext = true。但这会导致搜索栏出现在下一个控制器I选项卡中。非常困惑,请帮忙。

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

AppDelegate.swift中的

window?.backgroundColor = UIColor.white