【问题标题】:Tableview header is not scrollable even after changing the style to UITableViewStyleGrouped即使将样式更改为 UITableViewStyleGrouped,Tableview 标题也无法滚动
【发布时间】:2018-03-10 18:24:12
【问题描述】:

我在 UITableView 的标题中添加了一个 searchBar,并希望能够在用户滚动单元格时使用它。

我已经尝试了所有方法,例如将样式设置为 UITableViewStyleGrouped,但它并没有解决我的问题。

这里是代码

var searchController: UISearchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
definesPresentationContext = true
tableView.tableHeaderView = searchController.searchBar

标题停留在停止位置的任何原因?

【问题讨论】:

  • @conarch 不是一个有用的答案,但它与 searchBar 没有任何关系。问题在于标题,因为它应该在滚动内容时滚动
  • 我假设搜索栏 b/c 是您提供的代码。我的意思是,您已将其指定为表格标题。它是 TABLE 标题,所以它不应该滚动。
  • @conarch 我在标题视图中显示了 searchBar,所以即使我添加了一个空视图,我也会得到相同的结果。
  • 实际上,我向@Slyavash 彻底道歉,我心情不好,不应该发表评论。我确实认为该表的行为符合预期,但我将删除我之前的 cmets。对不起! :-(
  • @conarch 哈哈没关系 :D ,但我认为 tableview 的行为不应该是因为如果您查看部分标题,它会在您滚动到下一部分时滚动

标签: ios swift uitableview swift4 xcode9


【解决方案1】:

如果您使用的是 iOS 11,则可以使用以下代码将 UISearchBar 放入 UINavigationBar。即使您滚动 UITableView,UISearchBar 也将始终可见。

class DishesTableViewController : UITableViewController, UISearchResultsUpdating {

    func updateSearchResults(for searchController: UISearchController) {

    }

    override func viewDidLoad() {
        super.viewDidLoad()

        let searchController = UISearchController(searchResultsController: self)
        searchController.searchResultsUpdater = self

        self.navigationItem.searchController = searchController
        self.navigationItem.hidesSearchBarWhenScrolling = false 
    }

【讨论】:

    【解决方案2】:

    我不确定您是否只是在寻找编程解决方案,但通过 Interface Builder,您可以在 UITableView 上方放置一个搜索栏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-19
      相关资源
      最近更新 更多