Я разрабатываю Приложение, где я хотел изменить текст Строки поиска в SearchBar. Я хотел изменить текст Кнопки отмены Также, которая появляется рядом с SearchBar. Прежде, чем ввести любую строку в панель поиска мы wil получают Строку поиска как строку по умолчанию. Я хотел изменить текст той строки и когда мы нажимаем на ту панель поиска, мы получаем кнопку отмены рядом с панелью поиска, и я хотел изменить текст той кнопки отмены.
Вам также необходимо иметь "searchBar setShowsCancelButton" перед процедурой.
- (void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
[theSearchBar setShowsCancelButton:YES animated:NO];
for (UIView *subView in theSearchBar.subviews){
if([subView isKindOfClass:[UIButton class]]){
[(UIButton*)subView setTitle:@"Done" forState:UIControlStateNormal];
}
}
}
Также обратите внимание: используйте UIButton, чтобы избежать проблем с Apple!
Если под «Строкой поиска» вы имеете в виду заполнитель, то это должно быть сделано:
[searchBar setPlaceholder:@"Whatever you want"];
Что касается изменения текста кнопки отмены, это может быть немного сложнее. Apple не использует для этого ни стандартный UIBarButtonItem, ни даже нестандартный UIButton. Вместо этого они используют UINavigationButton для кнопки отмены в строке поиска. Поскольку это не документированный общедоступный класс, попытка его изменения вполне может привести к отклонению вашего приложения из App Store. Если вы действительно хотите рискнуть получить отказ, вы можете выполнить поиск в подпредставлениях searchBar:
for(UIView *view in [searchBar subviews]) {
if([view isKindOfClass:[NSClassFromString(@"UINavigationButton") class]]) {
[(UIBarItem *)view setTitle:@"Whatever you want"];
}
}
Обратите внимание, что кнопка отмены загружается лениво, поэтому вам придется выполнить эту модификацию, когда панель поиска будет активирована пользователем.