iOS - программно перемещайте UISearchBar

В настоящее время у меня есть UISearchBar в обычном UIViewController. SearchBar находится более или менее в середине UIView, и когда я нажимаю, чтобы ввести какой-либо текст, мой tableView полностью перекрывает searchBar, и я не могу нажать кнопку очистки / отмены: я не вижу панель поиска больше. Когда я полностью перемещаю searchBar в верхнюю часть экрана, он становится идеальным. Но я делаю это с помощью раскадровки. Как я могу сделать то же самое программно? Переместите SearchBar в верхнюю часть представления.

Спасибо большое за вашу помощь


person el-flor    schedule 19.01.2015    source источник


Ответы (2)


Я бы порекомендовал изучить UISearchController (iOS 8+). Из Apple Docs:

Класс UISearchController определяет интерфейс, который управляет представлением панели поиска совместно с контентом контроллера результатов поиска.

Документы Apple можно найти здесь .

Если вы настаиваете на выполнении этого вручную, вы можете попробовать настроить ограничение Auto Layout следующим образом, чтобы всегда размещать SearchBar в верхней части TableView:

 [self addConstraint:[NSLayoutConstraint constraintWithItem:_searchBar
                                             attribute:NSLayoutAttributeBottom
                                             relatedBy:NSLayoutRelationEqual
                                                toItem:_myTableView
                                             attribute:NSLayoutAttributeTop
                                            multiplier:1.0
                                              constant:0.0]];
person JaredH    schedule 19.01.2015
comment
Я бы рекомендовал познакомиться с AL. :) Вы могли бы хотя бы просто использовать его для этого экрана. Если вы не хотите использовать AL, посмотрите UISearchController. - person JaredH; 19.01.2015

У вас есть 3 варианта:

  1. [self.view insertSubview:yourSearchBar aboveSubview:yourTableView];

  2. [parentView bringSubviewToFront:yourSearchBar];

  3. [self.view insertSubview:yourSearchBar atIndex:0];

Кстати - все проблемы с просмотром, который прыгает вперед и назад, вызван, когда вы создаете их с помощью раскадровки, поэтому гораздо лучше делать это программно.

person Asi Givati    schedule 19.01.2015
comment
Привет, спасибо за помощь. Но ни один из этих трех вариантов не выводит searchBar в начало UIView ... - person el-flor; 19.01.2015