【发布时间】:2017-11-24 09:09:20
【问题描述】:
我正在尝试将 UISearchController 添加到包含 UITableView(以及 MKMapView,但希望这不是问题)的 UIViewController。我关注了Ray Wenderlich's tutorial,但在行为方面我无法得到相同的结果。
这是我的 viewDidLoad:
override func viewDidLoad() {
super.viewDidLoad()
// Setup the Search Controller
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.placeholder = NSLocalizedString("Search references by project, customer or city", comment: "")
if #available(iOS 11.0, *) {
navigationItem.searchController = searchController
navigationItem.hidesSearchBarWhenScrolling = true
} else {
tableView.tableHeaderView = searchController.searchBar
}
definesPresentationContext = true
self.modeSelector.layer.cornerRadius = 5.0
if let split = splitViewController {
let controllers = split.viewControllers
detailViewController = (controllers[controllers.count - 1] as! UINavigationController).topViewController as? ReferenceViewController
}
self.navigationItem.rightBarButtonItem?.isEnabled = false
}
注意中间的#available测试是因为我需要支持iOS到9.1。
现在我看到了几个问题:
- 搜索栏立即出现,我无法通过滚动隐藏它
- 当我聚焦搜索栏时,tableview 的顶部不会粘在导航项的底部:
我看到 Ray Wenderlich 的示例项目的唯一主要区别是,由于我使用 Xcode 9 创建了我的项目,我的故事板不使用顶部和底部布局指南,而是使用安全区域。不知道这是否相关,但这是我看到的唯一内容。
知道发生了什么以及如何解决这个问题吗?
【问题讨论】:
-
点击你的视图控制器然后在AI中取消选中
Adjust Scroll View Insets希望这会有所帮助。 -
@DharmeshKheni 不,它不会改变任何东西。相同的行为。
-
@matt 也没有改变任何东西。
-
self.searchController.dimsBackgroundDuringPresentation = YES 如果您使用另一个视图控制器进行 searchResultsController 很有用但是在您的代码中您使用当前视图来显示结果
-
@Sebastien 嘿,如果我的回答有助于解决问题,请将其标记为正确答案。谢谢
标签: ios swift uitableview uisearchcontroller