UITableView 单元格重叠搜索栏视图设置为导航栏的 searchController

问题描述 投票:0回答:2

我有一个 UISearchController 配置为导航栏的 searchController。我有以下设置。

let searchController = UISearchController(searchResultsController: nil)
searchController.hidesNavigationBarDuringPresentation = true
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.placeholder = LocalisedStrings.searchChannels
searchController.searchBar.searchBarStyle = .minimal
searchController.searchBar.delegate = self
navigationItem.hidesSearchBarWhenScrolling = false
navigationItem.searchController = searchController

我有一个 UITableView 作为 ViewController 视图的子视图,如下所示:

func setupView() {
    extendedLayoutIncludesOpaqueBars = true
    view.backgroundColor = secondarySurfaceColor
    view.addSubview(channelsTV)
    view.addSubview(emptyView)
    
    NSLayoutConstraint.activate([
        channelsTV.leadingAnchor.constraint(equalTo: view.leadingAnchor),
        channelsTV.topAnchor.constraint(equalTo: view.topAnchor),
        channelsTV.trailingAnchor.constraint(equalTo: view.trailingAnchor),
        channelsTV.bottomAnchor.constraint(equalTo: view.bottomAnchor),
        
        emptyView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
        emptyViewCenterYAnchorConstraint,
    ])
}

我面临以下问题:UITableView 项目在搜索控制器下可见,用于小滚动,并且在正常向上/向下滚动吊索期间是正常的。

期望的行为是 tableView 单元格不应与搜索栏和导航栏重叠。但是当tableView滚动时,导航栏应该从大标题折叠到小标题。有什么办法吗?非常感谢对此的帮助,提前致谢。如果您需要更多详细信息,请发表评论。

ios swift uitableview uinavigationbar uisearchcontroller
2个回答
0
投票

试试这个技巧:

view.addSubview(UIView()) // To prevent the large tile nav bar from collapsing

我忽略了原因,但这打破了 UIScrollView 和导航栏之间的链接......这可能会解决你的问题。


0
投票

尝试将

UITableView
固定到 superView.topAnchor,而不是 safeAreaLayoutGuide.topAnchor

© www.soinside.com 2019 - 2024. All rights reserved.