ios - UITableView、搜索栏和部分索引

标签 ios uitableview searchbar

你好,我正在尝试使用 UITableView,我在 viewDidLoad 方法中添加了一个 SearchBar,如下所示: enter image description here

和一个部分索引栏,方法如下: enter image description here

我的问题是:

1- 可以向下推索引栏,使其不覆盖搜索栏

2- 可以在应用程序启动时在 viewDidLoad 方法中将整个 tableView 向上滚动到隐藏的 SearchBar

enter image description here

最佳答案

我不知道这是否是实现此目标的最简单方法,但它确实有效。

第一件事是不要将搜索栏添加为标题 View ,而是将其和表格 View 添加到单独的 ScrollView 中。像这样的东西(边距仅用于说明目的):浅蓝色是底层 ScrollView nested views

这会自动修复问题 #1 - 索引栏现在位于搜索栏下方。

现在,由于这种嵌套的 ScrollView ( TableView 是 ScrollView 的子类),如果我们想要获得流畅的滚动体验,我们需要像这样子类化 UIScrollView :

class InnerScrollView: UIScrollView {
    func gestureRecognizer(gestureRecognizer: UIGestureRecognizer,
        shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
            return true
    }
}

并使用此类作为我们的基础 ScrollView - 在代码中或通过在 Interface Builder 中设置它。这样一来,当用户滚动时,搜索栏将首先出现/消失,然后表格 View 内容将平滑滚动。

至于初始偏移量,这需要在 viewDidLayoutSubviews 中完成,因为这是您可以确保已设置 ScrollView 的第一个地方。

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    let initalContentOffset = CGPoint(x: 0, y:self.tableView.frame.origin.y)
    self.underlyingScrollView.contentOffset = initalContentOffset

}

如果有任何不清楚的地方,请告诉我。

关于ios - UITableView、搜索栏和部分索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34042308/

相关文章:

ionic4 - 如何在 Ionic 4 搜索栏上设置值?

ios - 使用 Flash develop 导出 DSYM

ios - 以编程方式将 UICollectionView 嵌套在 UIVIew 中

objective-c - 使用 navigationController 的白屏

ios - 无法启动模拟器

ios - 带有自定义 UITableViewCell 的 UITableView

ios - UITableViewCell 自动高度不正确,直到我滚动

ios - 重复的对象被追加到数组 swift firebase 中

ios - 为什么我的搜索栏不起作用?

ios - 单击搜索栏文本字段中的复制或剪切选项时,应用崩溃