我如何使用UISearchDisplayController和UICollectionViewController?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (50)

如果你使用带有UITableViewController的UISearchDisplayController,当用户点击搜索栏时,它会动画以替换导航栏。

我想在UICollectionViewController的顶部使用UISearchBar时获得相同的效果。

提问于
用户回答回答于

我刚刚进行了相同的调查,并且提出了一个不涉及重写UISearchDisplayController的半熟但可行的解决方案。

在IB创建了一个UIViewController,我插入了它(见屏幕截图):一个用于布局目的的视图 - >其中我首先丢弃了一个UISearchBar和显示控制器。在相同的视图中(并排),我用自定义的UICollectionViewCell拖放了一个UICollectionView。然后我放入一个UITableViewProvider(带有一个自定义UITableCell,但这不是必需的,你也可以忽略屏幕截图中的UITabBarItem和Nav项,这是无关紧要的)。我将UITableView的高度设置为0,并连接所有出口和委托,最终的结果如下,当光标进入UISearchBox,UITolViewView顶部的UITableView叠加层时,就会调用shouldReloadTableForSearchString del和结果出现在tableView中; 在searchBarSearchButtonClicked上,我只需设置UICollectionView的dataSource并在它的出口et voila上调用reloadData。

截图:

用户回答回答于

代码:

-(void)viewDidLoad
{
    [super viewDidLoad];
    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:CellIdentifier];
    _objectChanges = [NSMutableArray array];
    _sectionChanges = [NSMutableArray array];
    [self performFetch];
    searchBar = [[UISearchBar alloc]
                  initWithFrame:CGRectMake(0.0, 50.0, self.view.bounds.size.width,
                                           44.0)];
    searchBar.placeholder = @"Search for channels";
    searchBar.tintColor = [UIColor blackColor];
    searchBar.delegate = self;
}


-(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
    SupplementaryView *header = nil;

    if ([kind isEqual:UICollectionElementKindSectionHeader])
    {
        header = [self.collectionView dequeueReusableSupplementaryViewOfKind:kind
                                                    withReuseIdentifier:@"reuseHeader"
                                                           forIndexPath:indexPath];

        [header addSubview:searchBar];

    }
    return header;
}

所属标签

可能回答问题的人

  • 腾讯云数据库 TencentDB

    腾讯云 · 产品团队 (已认证)

    304 粉丝2 提问51 回答
  • EatRice

    17 粉丝0 提问187 回答
  • 华讯云

    1 粉丝0 提问156 回答
  • 最爱开车啦

    9 粉丝503 提问1.7K 回答

扫码关注云+社区

领取腾讯云代金券