github地址:https://github.com/pujiaxin33/JXCategoryView
源码中的几个类
TitleViewController
继承自ContentBaseViewController
ContentBaseViewController
设置展示的VC和上方的分类视图显示的内容
添加子视图JXCategoryListContainerView
JXCategoryListContainerView
用来装所有的控制器
添加了一个JXCategoryListContainerViewController控制器
再在此控制器上添加一个UICollectionView,在此UICollectionView上添加子控制器的根视图(个人觉得用UICollectionView更好,有复用机制)
ListViewController
最终显示的控制器
遵守了JXCategoryListContentViewDelegate代理
实现了listView协议,返回自身的根视图。
(个人觉得不必再让我们自定义的VC遵守协议了,直接添加我们自定义的VC的根视图)
收获
疑问:怎么将自控制器放到_validListDict中的?
list = [self.delegate listContainerView:self initListForIndex:index];
if ([list isKindOfClass:[UIViewController class]]) {
[self.containerVC addChildViewController:(UIViewController *)list];
}
_validListDict[@(index)] = list;
JXCategoryListContainerView通过代理实现的代理的方法
- (id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index;
返回一个控制器,然后将此控制器添加到_validListDict中。
我们需要做的
1.创建一个类似ContentBaseViewController的控制器用来设置JXCategoryTitleView对象
2.创建需要添加的所有自控制器
网友评论