Удалить строку UISearchBar с UISearchDisplayController при удалении цвета фона

Я добавил с помощью конструктора интерфейсов UISearchBar с UISearchDisplayController в свой UITableView. Я знаю, как установить цвет фона UISearchBar, я делаю это так:

for (UIView *subview in self.searchBar.subviews) {
        if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {

            [subview removeFromSuperview];
        }
    }

но вы же видите, есть строка, которую я не могу понять, и как ее убрать, ту прокрутку с поисковой строкой:

введите здесь описание изображения

если я вставлю с помощью построителя интерфейса только UISearchbar без UISearchDisplayController этой строки нет, как я могу удалить эту строку?


person Piero    schedule 21.08.2013    source источник


Ответы (2)


Используйте это вместо этого:

  for (UIView *subview in self.searchDisplayController.searchBar.subviews) {
    if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {

      [subview removeFromSuperview];
    }
  } 

Когда мы используем UISearchDisplayController, searchBar связывается со свойством searchBar UISearchDisplayController, и к нему можно получить доступ с помощью self.searchDisplayController.searchBar

person Puneet Sharma    schedule 21.08.2013
comment
Да, я только что попробовал. Он удалил фоновый вид панели поиска. - person Puneet Sharma; 21.08.2013
comment
Почему вы не получаете ошибку компиляции в этой строке self.searchBar? Вы сделали отдельное свойство и подключили панель поиска от nib к своему свойству? - person Puneet Sharma; 21.08.2013
comment
я добавил uisearchbar с displaycontroller в uitableview в построителе интерфейса, затем из построителя интерфейса я установил соединение с представлением владельца... - person Piero; 21.08.2013
comment
Когда вы перетаскиваете панель поиска и контроллер отображения поиска из библиотеки объектов на перо, вы получаете панель поиска, связанную с контроллером отображения поиска. Панель поиска в этом случае связана с объектом SearchDisplayController, доступ к которому можно получить через self.searchDisplayController.searchBar. Вам не нужно создавать отдельный IBOUTLET для свойства панели поиска. Это противоречит цели использования SearchDisplayController. Фактически, даже не создавайте IBOutlet для контроллера отображения поиска, так как это делается автоматически. - person Puneet Sharma; 21.08.2013
comment
я понимаю, я удаляю все, и я начал снова, я добавляю UISearchBar и UISearchDisplayController в uitableview в построителе интерфейса, и я не делаю никакого IBOutlet, и я использую ваш код в ответе, и строка все еще там.. . - person Piero; 21.08.2013
comment
я не думаю, что вы пробовали свой код... потому что поверьте мне, но линия всегда есть, я создал пример проекта и добавил только эти несколько вещей, и он не работает... - person Piero; 21.08.2013
comment
Поверьте мне, я пробовал это, но скажите мне одну вещь, если вы удалите UISearchBarBackground, тогда вы должны получить полностью черный фон. Очистите/создайте свой проект. - person Puneet Sharma; 21.08.2013
comment
вот простой проект, попробовал и скажи мне, если увидишь эту строку...dropbox .com/s/n2lympsnnpzi8pa/bha.zip - person Piero; 21.08.2013
comment
К сожалению, я не могу получить доступ к вашему проекту на моем рабочем месте. Но я уверен, что вы найдете свое решение. Продолжайте искать. - person Puneet Sharma; 21.08.2013
comment
я делаю еще один простой проект, используя Xcode 4, так что вы можете его использовать, возможно, у вас нет предварительного просмотра для разработчиков, это ссылка: dropbox.com/s/m5wqxrg39wfru19/Bha2.zip я не думаю, что смогу найти решение в одиночку, если вы можете взглянуть, пожалуйста, спасибо .. . - person Piero; 21.08.2013
comment
давайте продолжим это обсуждение в чате - person Puneet Sharma; 21.08.2013

Я использую изображение размером 1 пиксель с непрозрачностью 0% (image)

self.searchDisplayController.searchBar.backgroundImage=[UIImage imageNamed:@"image"] ;

и его работа идеальна, как вы хотите.

person Toseef Khilji    schedule 21.08.2013