今天要介绍的是最近封装的一个控件,一个类似选项卡的控件,集成了以下功能,
1初始化
(1)只需通过传入一个标题数组,和设置frame ,即可自动动态生成所有的tab,(数组有多少个title 就自动生成多少个tab)一行代码就可集成整个控件
2 功能
(1)点击切换tab(工作,任务,目标)
(2) 左右滚动切换tab
(3) 上滑刷新和下拉加载
3使用
(1)初始化
_scrollTapViw = [[DTScrollStatusView alloc]initWithTitleArr:@[@"工作",@"任务",@"目标"] andType:ScrollTapTypeWithNavigation];
_scrollTapViw.scrollStatusDelegate = self;
[self.view addSubview:_scrollTapViw];
这个控件为了方便使用提供三种初始化方法,大体可以看demo注释
(2)实现代理 :tableview代理
箱式布局中间部分是动态的生成的tableview 可以从左到右如图例,tab 分别为1,2,3
根据不同的tab 在tableview 的代理实现不同的cell;
图例实现的实现tableview 代码如下
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UITableViewCell"];
if (!cell) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"UITableViewCell"];
}
if (tableView.tag == 1) {
cell.textLabel.text = @"工作";
}
else if(tableView.tag == 2)
{
cell.textLabel.text = @"任务";
}
else
{
cell.textLabel.text = @"目标";
}
return cell;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView.tag == 1) {
return 1;
}
else
{
return 2;
}
}
由实例代码可知,实现tableview 的代理可以根据tab 来区分
刷新代理回调:可以通过tableArr 数组取出相应的tableview;
-(void)refreshViewWithTag:(int)tag andIsHeader:(BOOL)isHeader
{
if(isHeader)
{
if(tag == 1)
{
UITableView *table = _scrollTapViw.tableArr[tag -1];
[table reloadData];
}
NSLog(@"当前%d个tableview 的头部正在刷新",tag);
}
else
{
NSLog(@"当前%d个tableview 的尾部正在刷新",tag);
}
}
4 简单的实现原理如下图
这个控件可以分成两部分
A47936D6-A4C1-476A-A658-3228524A66A1.png
demo上传到了如下链接(github 求star)
https://github.com/heysunnyboy/scrollTapLayout.git
网友评论
互联网内幕、技术、八卦都在这里,快到碗里来。