我在iOS11的UITableViewController的navigationItem.searchController属性上附加了一个UISearchController.这很好用:我可以使用漂亮的iOS11风格的搜索栏.

不过,我想让搜索栏在启动时可见.默认情况下,用户必须在表视图中向上滚动才能看到搜索栏.有人知道这是怎么可能的吗?

enter image description hereenter image description here

Left: default situation after launch. Right: search bar made visible (by scrolling up). I’d like to have the search bar visible after launch, as in the right screenshot.

我已经发现,通过将我的导航项目的属性hidesSearchBarWhenScrolling设置为false,可以使搜索栏可见.然而,这会导致搜索栏始终可见-即使在向下滚动时也是如此-这不是我想要的.

推荐答案

以下内容首先使搜索栏可见,然后允许它在滚动时隐藏:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    if #available(iOS 11.0, *) {
        navigationItem.hidesSearchBarWhenScrolling = false
    }
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    if #available(iOS 11.0, *) {
        navigationItem.hidesSearchBarWhenScrolling = true
    }
}

使用isActive并没有达到我想要的效果,它使搜索栏处于活动状态(显示取消按钮等),而我只想让它可见.

Ios相关问答推荐

SwiftUI文本编辑器内部滚动填充,无需文本裁剪

使用AVCaptureEventInteraction捕获音量按键快门

JSON响应中的键有时为Int,有时为字符串

在 Swift 中,对象如何被准确地从内存中移除?

SwiftUI - 如何从主题感知命名 colored颜色 中获取正确的 RGB 值?

Flutter 构建 ios 失败:运行 pod 安装时出错

FileHandle 不会在 iOS 中释放内存

Xcode 14 弃用了位码 - 但为什么呢?

分析应用程序版本时出错 - Apple 提交到store

如何让我的 iOS 应用程序与 api 连接?

检测 iPhone 应用程序中是否存在摄像头?

SwiftUI NavigationLink 立即加载目标视图,无需单击

如何忽略touch 事件并将它们传递给另一个子视图的 UIControl 对象?

使用未知类型创建图像格式是一个错误与 UIImagePickerController

在 iOS 8.1 模拟器上更改语言不起作用

try 在 iOS 中处理后退导航按钮操作

iOS Swift - 获取当前本地时间和日期时间戳

正确的领域使用模式/最佳实践?

iOS 7 半透明模态视图控制器

如果我的分发证书过期会怎样?