【问题标题】:SearchController SearchBar Disappears from ViewSearchController SearchBar 从视图中消失
【发布时间】:2017-04-20 03:36:34
【问题描述】:

我正在使用 Xcode 8(确切地说是版本 8.1 (8B62))为 iOS 10 开发,并且我正在尝试开发一个视图控制器,它在 tableView 上方显示一个固定的 searchBar。我有初始布局,但是当我激活 searchBar 时,它完全从我的视图中消失了。

这是我的视图控制器的视图层次结构:

View 
| 
|---- UISearchBar 
| 
|---- UITableView

这是它的样子:

现在,问题来了。因为没有像 UISearchDisplayController 那样包含 UISearchController 的 Interface Builder 工具,所以我在视图控制器的 viewDidLoad 方法中以编程方式将 searchBar 添加到我的界面中,并且我正在使用 searchController.searchBar替换我在情节提要中使用的临时 UISearchBar:

// attribute to store the searchController
var searchController: UISearchController!

// temporary searchBar from storyboard
@IBOutlet weak var tempSearchBar: UISearchBar!

...

override func viewDidLoad() {
    super.viewDidLoad()

    searchController = UISearchController(searchResultsController: nil)
    searchController.searchResultsUpdater = self
    searchController.searchBar.frame = tempSearchBar.frame
    tempSearchBar.removeFromSuperview()
    view.addSubview(searchController.searchBar)
}

当我运行应用程序并激活附加到我的searchControllersearchBar 对象时,它会从视图中消失:

tableView 也发生了奇怪的变化,但我的主要关注点是让 searchBar 留在视图中。我已经尝试了一些不同的方法来完成这项工作,但我的运气为零。任何帮助深表感谢。我只是觉得它不应该那么难以实施。我可以用UISearchDisplayController 对象很好地做到这一点,但那些已被弃用,我正在努力成为一名优秀的程序员而不是使用它。

【问题讨论】:

    标签: uisearchbar xcode8 ios10 uisearchcontroller


    【解决方案1】:

    我和你有同样的问题。问题源于尝试手动设置 searchBar 的框架。您需要情节提要中的临时搜索栏吗?

    要解决此问题,请删除您设置框架的代码并将您的 tableview 从情节提要连接到您的代码:

    override func viewDidLoad() {
    super.viewDidLoad()
    
    searchController = UISearchController(searchResultsController: nil)
    searchController.searchResultsUpdater = self
    tableView.tableHeaderView = searchController.searchBar
    }
    

    【讨论】:

      猜你喜欢
      • 2017-12-14
      • 2013-10-03
      • 2021-06-24
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多