searchBar textDidChange

В моем tableViewController с searchBar я использую следующий метод:

-(void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
{
   ...my code
}

и он отлично работает, когда я набираю текст прямо в searchBar.

Проблема, с которой я столкнулся сейчас, заключается в том, что я хочу вызвать этот метод программно - это означает, что я хочу заполнить строку поиска из моего кода, который я знаю, как это сделать (на самом деле я выбираю слово, которое недавно искали в моем приложении языкового словаря) и назовите что-то вроде:

 [SearchBar textDidChange: recentlySearchedWord]

но это просто не работает из любого места в моем коде.

Пожалуйста, помогите мне, если у вас есть идеи, как решить эту проблему.

Спасибо,

Тим


person user1454623    schedule 28.07.2012    source источник


Ответы (3)


Если вы реализуете метод делегата UISearchBar - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText в своем контроллере представления (или любом классе) и хотите вызвать этот метод из того же класса, что вы и хотите, я предполагаю, вам придется вызвать

[self searchBar:SearchBar textDidChange:recentlySearchedWord];

где SearchBar является экземпляром UISearchBar, на который вы ссылаетесь.

person Sascha    schedule 28.07.2012
comment
Большое спасибо. Это как раз то, что я искал :) - person user1454623; 30.07.2012
comment
как сделать это быстро? - person Joseph Astrahan; 11.04.2016
comment
@JosephAstrahan, вы имеете в виду: searchBar (searchBar, textDidChange: RecentSearchedWord) - person Tai Le; 03.08.2016

textDidChange не является методом класса. Поэтому вместо звонка:

[SearchBar textDidChange: recentlySearchedWord];

вызов

[self searchBar:mySearchBar textDidChange: recentlySearchedWord];

Или, если textDidChange находится в другом классе, используйте экземпляр класса вместо self.

person Owen Hartnett    schedule 28.07.2012

Вы также можете попробовать использовать этот код, если он что-то упрощает.

<!DOCTYPE html>
<html>
<head>
<style>
input[type=text] {
    width: 100%;
    box-sizing: border-box;
    border: 2px solid #ccc;
    border-radius: 4px;
    font-size: 16px;
    background-color: white;
    background-image: url('searchicon.png');
    background-position: 10px 10px;
    background-repeat: no-repeat;
    padding: 12px 20px 12px 40px;
}
</style>
</head>
<body>

<p>Input with icon:</p>

<form>
  <input type="text" name="search" placeholder="Search..">
</form>

</body>
</html>

person Senity    schedule 30.10.2016
comment
Знаете, он не спрашивал о HTML! - person Danh; 30.10.2016