切换回搜索栏激活时,标签栏视图变为空白

时间:2016-08-08 19:12:46

标签: ios swift uitabbarcontroller uisearchcontroller

更新2:

由于人们仍然在关注这个问题:知道我意识到在一个实际的,孤立的iOS设备上复制这个bug是不可能的。当您呈现搜索控制器时,iOS也会显示一个键盘,它覆盖了标签栏。要切换标签,必须关闭键盘,这也会关闭搜索控制器。

我说“隔离”的原因是因为我不知道你是否可以用蓝牙键盘复制这个并且没有人试试。 iOS键盘可能无法连接外接键盘

更新:

我在View 1中添加了一个viewWillDisappear覆盖,并发现了一些有趣的结果:

当搜索栏不存在时,切换选项卡会在加载下一个视图之前关闭视图。但是,当存在搜索栏时,在加载下一个视图之前不会关闭视图

我在根目录下有一个标签栏控制器,它有2个标签。每个都进入导航控制器,将设备带到视图。这是一张粗略的图表:

                   /-> Navigation Controller -> View 1
tab bar controller 
                   \-> Navigation Controller -> View 2

这通常很好。但是,View 1有一个UISearchController。问题是,如果单击搜索按钮,则会显示搜索控制器。如果然后单击选项卡栏中的“查看2”并切换回“视图1”,则搜索控制器仍然存在且视图为黑色。

我当前的hacky“修复”是在搜索栏显而易见时禁用标签栏,如果用户选择“取消”则重新启用它。这有两个问题:

  1. 这是jank;用户应该能够随时切换标签
  2. 只有在用户点击取消时才重新启用,而不是仅仅点击搜索
  3. 我该如何解决这个问题?这是我正在谈论的图片

    enter image description here

    enter image description here

    enter image description here

    enter image description here

1 个答案:

答案 0 :(得分:12)

我通过以下答案解决了这个问题: UISearchController causes black screen Swift 2.0

我在sudo su pip uninstall xgboost pip install xgboost python >>> import xgboost /usr/local/anaconda2/lib/python2.7/site-packages/sklearn/cross_validation.py:44: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20. "This module will be removed in 0.20.", DeprecationWarning) >>> ~ 中实现了它:

viewDidLoad

这对我来说几乎解决了这个问题。然后我遇到了另一个问题,试图在 self.definesPresentationContext = true searchController.searchResultsUpdater = self searchController.searchBar.delegate = self searchController.dimsBackgroundDuringPresentation = false searchController.definesPresentationContext = true 处离开,这在以前从来就不是问题。我通过首先弹出UISearchController,然后正常执行segue来解决这个问题:

didSelectRowAt