Я хочу иметь searchBar в таблицеView, который скрыт по умолчанию, но если пользователь отключается, он появляется.Как скрыть таблицуView searchBar
Таким образом, я использовал следующий код для его реализации, но когда представление отображается в первый раз, наглядное отображение SearchBar видно, и я хотел бы избежать этой кратковременной вспышки. Добавление self.tableView.contentOffset = CGPointMake(0, 0)
к методу viewDidLoad()
не влияет. Обратите внимание, что tableView находится за контроллером навигации, поэтому установка Y offset to 0 эффективно скрывает SearchBar за панель навигации. Любая идея, как убедиться, что headerView tableView скрыт, когда сначала отображается представление.
Я рассмотрел просто удаление headerView, но затем пользователь не может перетащить его для доступа.
override func viewDidLoad() {
super.viewDidLoad()
searchBar.delegate = self
searchBar.frame = CGRectMake(0, 0, self.tableView.frame.size.width, 44)
if let tv = self.tableView {
if let headerView = tv.tableHeaderView {
headerView.addSubview(searchBar)
} else {
FLOG("No table header view is available so create one!")
let headerView = UIView()
let width: CGFloat = tv.frame.size.width
headerView.frame = CGRectMake(0, 0, width, 44);
tv.tableHeaderView = headerView
tv.tableHeaderView!.addSubview(searchBar)
}
}
}
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
dispatch_after(0, dispatch_get_main_queue()) {
self.tableView.contentOffset = CGPointMake(0, 0)
}
}
Спасибо, однако, когда я называю 'contentOffset' в 'viewWillAppear' напрямую, он вообще не работает. Я нашел другое сообщение, где они получили его, используя «отправку». Это похоже на новое поведение для iOS8.x. Вскоре я посмотрю на другие предложения. –
Кстати, вы правы в том, что «viewDidLoad» получает один раз, и «viewWillAppear» вызывается всякий раз, когда вид становится видимым. –
Я также забыл упомянуть, что позже я добавляю еще один вид в headerView, поэтому я не использую сам searchBar. Однако это не должно влиять на отображение. –