我想允许我的应用的用户使用UISearchBar
上方的UICollectionView
搜索图片。根据我的理解,UICollectionView
必须在UICollectionViewController
才能正常运作。但是,Xcode不允许我在UICollectionViewController
中放置一个搜索栏。我也无法使用通用UIViewController
,因为集合视图无法正常工作。如何实现我想要的功能?
答案 0 :(得分:32)
CollectionView + SearchBar 。
创建标题视图
创建搜索栏:
创建可重复使用的视图自定义类
设置可重复使用的视图自定义类
创建搜索栏
技巧:将搜索栏代表连接到COLLECTION VIEW类,搜索栏出口转到CUSTOM REUSABLE VIEW CLASS
实现协议的CollectionView标头方法
while (token1.IsCancellationRequested)
{
}
设置搜索栏代理
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
if (kind == UICollectionElementKindSectionHeader) {
let headerView:UICollectionReusableView = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "CollectionViewHeader", for: indexPath)
return headerView
}
return UICollectionReusableView()
}
最后,您的搜索栏委托方法将在您的CollectionView类中调用
class MyCollectionViewController: (other delegates...), UISearchBarDelegate {
答案 1 :(得分:1)
UICollectionView
内UICollectionViewController
不是强制性的。 UICollectionView
就像UITableView
一样,可以添加到任何地方。您需要做的就是实现UICollectionViewDelegate
和UICollectionViewDataSource
协议。您可以按照以下教程Supplementary Header添加搜索栏作为UICollectionView
的补充标题。