国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

iOS RATreeView的簡單使用(樹狀列表)

2019-11-06 09:53:38
字體:
供稿:網(wǎng)友

RATreeView是一個第三方的iOS樹視圖(通俗的講就是折疊單元格),它是對UITableView的封裝,定義自己的委托和數(shù)據(jù)源的法,RATreeView是高度可定制的,并且有很多功能。很多朋友都說使用的不好,官方講的也不夠詳細(xì),所以我就給大家講一下,怎么使用.


首先先看下實(shí)現(xiàn)效果1.gif

使用方法

CocoaPods pod 'RATreeView', '~> 2.1.0'

具體使用1.創(chuàng)建model

#import <Foundation/Foundation.h>@interface RaTreeModel : NSObject@PRoperty (nonatomic,copy) NSString *name;//標(biāo)題@property (nonatomic,strong) NSArray *children;//子節(jié)點(diǎn)數(shù)組//初始化一個model- (id)initWithName:(NSString *)name children:(NSArray *)array;//遍歷構(gòu)造器+ (id)dataObjectWithName:(NSString *)name children:(NSArray *)children;@end
#import "RaTreeModel.h"@implementation RaTreeModel- (id)initWithName:(NSString *)name children:(NSArray *)children{    self = [super init];    if (self) {        self.children = children;        self.name = name;    }    return self;}+ (id)dataObjectWithName:(NSString *)name children:(NSArray *)children{    return [[self alloc] initWithName:name children:children];}@end

2.創(chuàng)建cell

特別注意 xib創(chuàng)建的cell, 一定不要勾選Use Auto Layout,否則cell上的布局不會執(zhí)行.

找不到的,請看下圖

Snip20160525_1.png

cell創(chuàng)建具體如下:

這是我用xib設(shè)置的cell,你們按照你們的需求做

Snip20160525_4.png
#import <UIKit/UIKit.h>@interface RaTreeViewCell : UITableViewCell@property (weak, nonatomic) IBOutlet UIImageView *iconView;//圖標(biāo)@property (weak, nonatomic) IBOutlet UILabel *titleLable;//標(biāo)題//賦值- (void)setCellBasicInfoWith:(NSString *)title level:(NSInteger)level children:(NSInteger )children;@end
#import "RaTreeViewCell.h"@interface RaTreeViewCell ()@end@implementation RaTreeViewCell- (void)awakeFromNib {    // Initialization code    self.selectionStyle = UITableViewCellSelectionStyleNone;}- (void)setSelected:(BOOL)selected animated:(BOOL)animated {    [super setSelected:selected animated:animated];    // Configure the view for the selected state}- (void)setCellBasicInfoWith:(NSString *)title level:(NSInteger)level children:(NSInteger )children{    //有自孩子時顯示圖標(biāo)    if (children==0) {        self.iconView.hidden = YES;    }    else { //否則不顯示        self.iconView.hidden = NO;    }    self.titleLable.text = title;    self.iconView.image = [UIImage imageNamed:@"close"];    //每一層的布局    CGFloat left = 10+level*30;    //頭像的位置    CGRect  iconViewFrame = self.iconView.frame;    iconViewFrame.origin.x = left;    self.iconView.frame = iconViewFrame;    //title的位置    CGRect titleFrame = self.titleLable.frame;    titleFrame.origin.x = 40+left;    self.titleLable.frame = titleFrame;}

3.創(chuàng)建RATreeView只展示核心代碼

數(shù)據(jù)
//加載數(shù)據(jù)- (void)setData {    //寶雞市 (四層)    RaTreeModel *zijingcun = [RaTreeModel dataObjectWithName:@"紫荊村" children:nil];    RaTreeModel *chengcunzheng = [RaTreeModel dataObjectWithName:@"陳村鎮(zhèn)" children:@[zijingcun]];    RaTreeModel *fengxiang = [RaTreeModel dataObjectWithName:@"鳳翔縣" children:@[chengcunzheng]];    RaTreeModel *qishan = [RaTreeModel dataObjectWithName:@"岐山縣" children:nil];    RaTreeModel *baoji = [RaTreeModel dataObjectWithName:@"寶雞市" children:@[fengxiang,qishan]];    //西安市    RaTreeModel *yantaqu = [RaTreeModel dataObjectWithName:@"雁塔區(qū)" children:nil];    RaTreeModel *xinchengqu = [RaTreeModel dataObjectWithName:@"新城區(qū)" children:nil];    RaTreeModel *xian = [RaTreeModel dataObjectWithName:@"西安" children:@[yantaqu,xinchengqu]];    RaTreeModel *shanxi = [RaTreeModel dataObjectWithName:@"陜西" children:@[baoji,xian]];    [self.modelArray addObject:shanxi];}
#代理方法
#pragma mark -----------delegate //返回行高- (CGFloat)treeView:(RATreeView *)treeView heightForRowForItem:(id)item {    return 50;}//將要展開- (void)treeView:(RATreeView *)treeView willExpandRowForItem:(id)item {    RaTreeViewCell *cell = (RaTreeViewCell *)[treeView cellForItem:item];    cell.iconView.image = [UIImage imageNamed:@"open"];}//將要收縮- (void)treeView:(RATreeView *)treeView willCollapseRowForItem:(id)item {    RaTreeViewCell *cell = (RaTreeViewCell *)[treeView cellForItem:item];    cell.iconView.image = [UIImage imageNamed:@"close"];}//已經(jīng)展開- (void)treeView:(RATreeView *)treeView didExpandRowForItem:(id)item {    NSLog(@"已經(jīng)展開了");}//已經(jīng)收縮- (void)treeView:(RATreeView *)treeView didCollapseRowForItem:(id)item {    NSLog(@"已經(jīng)收縮了");}
# dataSource方法
//返回cell- (UITableViewCell *)treeView:(RATreeView *)treeView cellForItem:(id)item {    //獲取cell    RaTreeViewCell *cell = [treeView dequeueReusableCellWithIdentifier:@"RaTreeViewCell"];    //當(dāng)前item    RaTreeModel *model = item;    //當(dāng)前層級    NSInteger level = [treeView levelForCellForItem:item];    //賦值    [cell setCellBasicInfoWith:model.name level:level children:model.children.count];    return cell;}/** *  必須實(shí)現(xiàn) * *  @param treeView treeView *  @param item    節(jié)點(diǎn)對應(yīng)的item * *  @return  每一節(jié)點(diǎn)對應(yīng)的個數(shù) */- (NSInteger)treeView:(RATreeView *)treeView numberOfChildrenOfItem:(id)item{     RaTreeModel *model = item;     if (item == nil) {        return self.modelArray.count;    }    return model.children.count;}/** *必須實(shí)現(xiàn)的dataSource方法 * *  @param treeView treeView *  @param index    子節(jié)點(diǎn)的索引 *  @param item     子節(jié)點(diǎn)索引對應(yīng)的item * *  @return 返回 節(jié)點(diǎn)對應(yīng)的item */- (id)treeView:(RATreeView *)treeView child:(NSInteger)index ofItem:(id)item {    RaTreeModel *model = item;    if (item==nil) {        return self.modelArray[index];    }    return model.children[index];}//cell的點(diǎn)擊方法- (void)treeView:(RATreeView *)treeView didSelectRowForItem:(id)item {    //獲取當(dāng)前的層    NSInteger level = [treeView levelForCellForItem:item];    //當(dāng)前點(diǎn)擊的model    RaTreeModel *model = item;    NSLog(@"點(diǎn)擊的是第%ld層,name=%@",level,model.name);}//單元格是否可以編輯 默認(rèn)是YES- (BOOL)treeView:(RATreeView *)treeView canEditRowForItem:(id)item {    return YES;}//編輯要實(shí)現(xiàn)的方法- (void)treeView:(RATreeView *)treeView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowForItem:(id)item {    NSLog(@"編輯了實(shí)現(xiàn)的方法");}

4.基本能用到的方法 我都寫了注釋,如有錯誤請指出.是不是比官方的清楚的多.


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 青海省| 高阳县| 龙南县| 康乐县| 田阳县| 明光市| 大宁县| 大竹县| 司法| 井陉县| 蓝田县| 清水河县| 樟树市| 民权县| 高邮市| 淮滨县| 成都市| 南川市| 新丰县| 株洲县| 永嘉县| 股票| 焉耆| 信宜市| 常山县| 平果县| 山西省| 绥化市| 孝感市| 万宁市| 大新县| 阳东县| 华阴市| 永寿县| 永丰县| 贺兰县| 凭祥市| 田林县| 西贡区| 周口市| 长沙市|