Как добавить пользовательский фон в табличное представление UISearchDisplayController?
Вопрос
Я хочу добавить пользовательский UIImageView к фону табличного представления UISearchDisplayController и установить цвет фона табличного представления в clearColor. Пробовал несколько другой подход, но не смог найти правильное решение. Есть идеи, как к этому подойти?
Примечание: я не хочу добавлять в иерархию представления searchResultsTableView searchDisplayController, а вместо этого накладываю на нее другое одноуровневое представление)
Решение
Вы можете установить фоновое изображение таким же образом, как и для основной таблицы, установите его только в методе делегата searchDisplayControllerDidBeginSearch. Например: -
- (void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller {
[controller.searchResultsTableView setDelegate:self];
UIImageView *anImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"gradientBackground.png"]];
controller.searchResultsTableView.backgroundView = anImage;
[anImage release];
controller.searchResultsTableView.separatorStyle = UITableViewCellSeparatorStyleNone;
controller.searchResultsTableView.backgroundColor = [UIColor clearColor]; }
Другие советы
Вы также можете делать это везде, где вы создаете экземпляр UISearchDisplayController
. В моем приложении я делал это в своем методе UITableView
viewDidLoad
и сопоставлял стили между двумя таблицами:
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView.separatorColor = [UIColor blackColor];
self.tableView.backgroundColor = [UIColor grayColor];
self.tableView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
searchController = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self];
searchController.delegate = self;
searchController.searchResultsDataSource = self;
searchController.searchResultsDelegate = self;
searchController.searchResultsTableView.separatorColor = self.tableView.separatorColor;
searchController.searchResultsTableView.backgroundColor = self.tableView.backgroundColor;
searchController.searchResultsTableView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
}