实现美团、百度等活动外卖列表展开界面

模仿的部分是点击tableview的活动时展开收回效果:


实现美团、百度等活动外卖列表展开界面_第1张图片
图片发自App

说明:
1.点击“优果原鲜”区域,push下一个页面
2.点击框框的内容,显示展开,再点击然后是收缩

效果:


自定义cell.gif

说一下我的思路(使用Storyboard):

1.我是用两个自定义tableView为基层。
i)一个是滚动大tableView(外Cell)
ii)另一个是在大tableView里的Cell放了一个小的tableView(内Cell)

2.做好约束,Cell的约束要注意一个地方,距底部cell的距离的priority低于内cell的高度。


实现美团、百度等活动外卖列表展开界面_第2张图片
priority

3.禁止内Cell的滚动效果


实现美团、百度等活动外卖列表展开界面_第3张图片
禁止内Cell的滚动效果

4.tableView有一个beginUpdates 和 endUpdates,单独更新一下这个Cell

//点击内Cell取到父View,即外Cell的TableView(有没有谁有比较好的方法?)
    UITableView *bigTableView = (UITableView *)tableView.superview.superview.superview.superview;

5.点击展开后,解决滚动的时候Cell重用(复用)问题就行。
我是用block的方式:

    __weak typeof(self) weakSelf = self;
    
    cell.customSelectedBlock = ^ (BOOL selected, NSInteger row)
    {
        if (selected) {
            
            [weakSelf.selectedArray addObject:@(row)];
            
        }else{
            
            [weakSelf.selectedArray removeObject:@(row)];
        }
    };

当然代理通知等都行,随你喜欢。

此外,我想一下为什么我要用内嵌Cell,是因为内Cell的数据可能是不确定的,通过网络请求下来的数据可多可少。我也不爱用for来写button,然后根据数据的多少来加多少个button。反正Cell也是可以自定义,这种是不是简单一点...

源码:
https://github.com/icharlie2014/TwoCell

你可能感兴趣的:(实现美团、百度等活动外卖列表展开界面)