UICollectionview, реализующий поиск

У меня есть UICollectionview встроенный в UIViewController . Кроме того, я добавил строку поиска в UIViewController, как в UICollectionview. Я не знаю, куда ее можно понести через Storyboard. Я ожидал, что поиск в UICollectionview будет таким же простым, как в Tableview . Но у него, похоже, есть свои правила. Есть ли хороший и простой пример, показывающий, как реализовать простой поиск в UICollectionview например, в UITableview ? Я хочу добиться, чтобы пользователь мог вводить строку поиска, а UICollectionview отображает результаты. Я нашел решение для реализации searchbar :

 - (void)viewDidLoad { [super viewDidLoad]; self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.collectionView.frame), 44)]; self.searchBar.autocorrectionType = UITextAutocorrectionTypeNo; self.searchBar.delegate = self; [self.collectionView addSubview:self.searchBar]; [self.collectionView setContentOffset:CGPointMake(0, 44)]; } - (void) viewWillAppear:(BOOL)animated{ // to show search bar [self.collectionView setContentOffset:CGPointMake(0, 0)]; // to hide search bar [self.collectionView setContentOffset:CGPointMake(0, 44)]; } -(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { [searchBar setShowsCancelButton:YES animated:YES]; } -(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { [searchBar setText:@""]; [searchBar setShowsCancelButton:NO animated:YES]; [searchBar resignFirstResponder]; } 

Это отлично работает, и он отображает searchbar которая является хорошим началом, но теперь я больше не вижу свой заголовок, потому что searchbar находится над заголовком. Любая идея, как поставить его над заголовком? Зеленый цвет – это заголовок.

Панель поиска через Headerview

4 Solutions collect form web for “UICollectionview, реализующий поиск”

То, как я это сделал в своем приложении, – это установить верхние вставки контента в 44, что является высотой по умолчанию UISearchBar в моей ViewDidLoa:

 [self.collectionView setContentInset:UIEdgeInsetsMake(44, 0, 0, 0)]; 

и затем я добавляю UISearchBar и устанавливаю, что Y указывает на -44 и 44 для высоты.

 UISearchBar *searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, -44, self.view.frame.size.width, 44.0)]; [self.collectionView addSubview:searchBar]; 

Один из способов сделать это – добавить панель поиска в виде заголовка представления коллекции. Используйте - (UICollectionReusableView *)collectionView: (UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath метод - (UICollectionReusableView *)collectionView: (UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath .

Образец кода –

 - (UICollectionReusableView *)collectionView: (UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { //Custom class for the header view. Controls are defined in the Storyboard HeaderView *headerView = [collectionView dequeueReusableSupplementaryViewOfKind: UICollectionElementKindSectionHeader withReuseIdentifier:@"HeaderView" forIndexPath:indexPath]; /* // Header view customization code */ [headerView.filterButton setImage: [[UIImage imageNamed:@"ButtonImage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal]; CGFloat spacing = 5; // the amount of spacing to appear between image and title headerView.filterButton.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, spacing); headerView.filterButton.titleEdgeInsets = UIEdgeInsetsMake(5, spacing, 0, 0); NSString *buttonTitle = @"Button Title"; [headerView.filterButton setTitle:buttonTitle forState:UIControlStateNormal]; headerView.backgroundColor = [UIColor redColor]; /* // Add the Search Bar */ UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(headerView.frame), 44)]; searchBar.autocorrectionType = UITextAutocorrectionTypeNo; searchBar.delegate = self; [headerView addSubview:searchBar]; return headerView; } 

Попробуйте вставить секцию в свою коллекцию. Предполагая, что вы используете раскладку потока, вызовите

 [(UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout setSectionInset:UIEdgeInsetsMake(64,0,0,0)]; 

in viewDidLoad .

Или вы можете реализовать этот метод делегата раскладки потока UICollectionViewDelegateFlowLayout ,

 - (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { return UIEdgeInsetsMake(64,0,0,0); } 

для лучшего контроля.

Удалите CGRectGetWidth(self.collectionView.frame) и установите ручную ширину, а затем ее мелко перестройте вместе с ней. И только. В конечном итоге уж уж уж collectionView.frame

  self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(2, 10, 70, 44)]; 
  • Модальные контроллеры View - как отображать и отклонять
  • Создайте кнопку поверх UiTableView
  • StoreKit's SKStoreProductViewController оставляет пространство между навигационной панелью и представлением?
  • UIViewControllerContext initalFrameForViewController & finalFrameForViewController показывает 0 для всех значений
  • Устранение представлений при изменении rootViewController внутри переходаWithView
  • Регистрация имени класса всех UIViewControllers в проекте
  • Ошибка при отключении контроллера просмотра
  • Программно добавление UITableView - как установить идентификатор повторного использования для ячеек?
  • Позиционирование UIViewControllers в UIScrollView бок о бок
  • iOS - заблокировать определенный UIViewController для определенной ориентации
  • Как закрыть диспетчер представлений, открытый с помощью currentModalViewController:
  • Interesting Posts

    Ошибка отчета в шаге: добавьте функцию Push Notifications в свой идентификатор приложения

    Содержимое ContentView UITableViewCell получает нежелательное ограничение «height == 44»

    Предупреждение об ограничениях в консоли, я не могу понять

    Отказ Apple после внедрения молчаливых уведомлений с PushKit

    iOS youtube player и AIR

    Загрузка библиотеки с помощью API календаря Google – Obj C

    Можем ли мы использовать: привязку podspec с зависимостями в podspec

    Укажите изображения для iPad в Xcode, например, @ 2x для iPhone 4

    Swift if statement – несколько условий, разделенных запятыми?

    Конфигурация фонового сеанса AFNetworking для расширения iOS 8

    MFMailComposeViewController в строке состояния iOS 7 – черный

    Основные данные EXC_BAD_ACCESS для ненулевых целых значений

    как получить 1 ширину ширины пикселя в ячейках UICollectionView? (код предоставлен)

    Почему didRotateFromInterfaceOrientation в категории вызывает проблемы с UISplitView?

    Несколько запросовWithGraphPath Facebook iOS

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.