IOS 写一个整洁易用的tableView

29 篇文章 0 订阅

整体还是用MVC设计模式,其中的M一般由两个模型类组成一个模块,V对应tableview要用到的cell,C则是tableviewController。

M:可以将tableview的数据对应成一个二维数组,二维数组中的一维数组对应每一个section,一维数组中的元素对应每一个cell。因此我们可以新建两个模型类,一个为BaseItem,它的属性对应cell中需要用到的数据如

@property (nonatomic, strong) NSString *itemIdentifier;
@property (nonatomic, strong) UIImage *itemImage;
@property (nonatomic, strong) NSString *itemTitle;
@property (nonatomic, strong) NSString *itemSubtitle;
@property (nonatomic, strong) UIImage *itemAccessoryImage;

第二个为sectionObject,用来给比如section的headertitle、footertitle赋值,其中还包含着一个数组items,保存了所有的BaseItem对象

@property(nonatomic,strong)NSString *headerTitle;
@property(nonatomic,strong)NSString *footerTitle;
@property(nonatomic,strong)NSMutableArray *items;

+ (instancetype)initWithItemArray:(NSMutableArray *)items;

V:新建一个继承自UITableViewCell的cell,为它添加一个BaseItem类型的属性,并且在setItem的方法里为自己的textLabel等赋值

- (void)setItem:(MyTableViewBaseItem *)item{
    _item = item;
    if (_item) {
        self.textLabel.text = _item.itemTitle;
        self.detailTextLabel.text = _item.itemSubtitle;
    }
}

C:控制器要做的事情就是将网络请求获取到的数据转换成模型,存入二维数组中,这样通过这个二维数组就可以得到tableview代理方法所需要的数据

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return self.arrGroup.count;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    NSMutableArray *cellArr = self.arrGroup[section];
    
    return cellArr.count;
}

在cellForRowAtIndexPath方法中只需按照cell的indexPath.section和indexPath.row所对应的数组下标把数组中的item取出并赋值给cell.item,这样cell的布局完成



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值