首页 > 代码库 > 英雄展示

英雄展示

//LOL英雄展示
#import "SKUIViewController"
import "hero.h"
@interface SKUIViewController()<UITableViewDataSource,UITableViewdelegate>
@property(nonatomic,strong)NSArray *heros;
@property(nonatomic,weak)IBOutlet UITableView *tableview;
@end

@implementation SKUIViewController
-(void)viewDidLoad
{
    [super viewDidLoad];
    //设置行高,默认是44,如果每行高度都一样的话,可通过这个属性设置,否则使用代理
    self.tableView.rowHeight=50;
    self.tableView.delegate=self;
    //分割线的颜色
    self.tableView.separatorColor=[UIColor colorWithRed:255/255.0 green:255/255.0 blue:255/255.0 alpha:255/255.0];
    
    //分割线类型
    self.tableView.sepatatorStyle=UITableViewCellSperatorStyleSingleLine;
    //表格的头部控件(直接显示表格的最顶部)
    self.tableView.tableHeaderView=[UIButton buttonWithType:];
    //表格的尾部控件(例如更多...微博的加载)
    self.tableView.tableFooterView=[[UISwitch alloc]init];
    
    
}
 -(NSArray *)heros;
 {
    
     if(_heros==nil)
     {
         //获得plist的全路径
         NSString *path=[[NSBundle mainBundle] pathForResource:@"heros.plist" ofType:nil];
         //加载数组
         NSArray *dictArray=[NSArray arrayWithContentOfFile;path];
         //将dictArray里面所有的字典转成模型对象,放到新的数组里面去
         NSMutableArray *heroArray=[NSMutableArray array];
         for(NSDictionary *dict in dictArray)
         {
             //创建模型对象
             SKHero *hero=[SKHero heroWithDictL:dict];
             //添加模型对象到数组中去
             [heroArray addObject:hero];                      
         }
         //赋值
         _heros=heroArray;    
     }
 return _heros;    
 }
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}
-(NSInteger)tableView:(UITableView *)tableView numbersOfRowsInSection:(NSInteger)section
{
    return self.heros.count;
}

性能优化
1.通过一个标识去缓存池中寻找可循环利用的cell
2.如果缓存池中找不到可循环利用的cell,则新建一个cell并给cell加上标示
3.给cell设置新的数据


-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //sstatic修饰局部变量,可以保证局部变量只分配一次存储空间(只初始化一次)
    static NSString *ID=@"A";
    //1.通过一个标识符去缓存池中寻找可循环利用的cell
    UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:@"ID"];
    if(cell==nil)
    {
        cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ID"];
    }
    SKHero *hero=self.heros[indexPath.row];
    cell.textLabel.text=hero.name;
    cell.detailLabel.text=hero.intro;
    cell.imageView.image=[UIImage imageNamed:hero.icon];
    //设置cell的右边的标志,小箭头,在IOS中一般设置-》通用-》 可以让用户知道可以点下去还有东西
    cell.accessorType=UITableViewAccessoryDisclosureIndicator;                           
    //设置cell右边为控件,如开关,类似是否开启蜂窝网络那样
    cell.accessorType=[[UISwitch alloc]init];
    
    //设置默认背景颜色(背景view不用设置尺寸,backgroundView的优先级>backgroudColor,直接使用backgroundView)
    UIView *bgView=[[UIView alloc]init];
    bgView.backgroundColor=[UIColor redColor];
    cell.backgroundView=bgView;
    
    //设置被选择时背景
    UIView *selectedView=[[UIView alloc]init];
    selectedView.backgroundColor=[UIColor greenColor];
    cell.selectedBackgroundView=selectedView;
    return cell;
    
}
 //每一行的高度不一致时,使用此方法设置行高
 -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
 {
     //第一行设置为100,其余每行设置为60
     if(indexPath==0)
         return 100;
     else
         return 60;
    
    
 }
 
@end


//文件:SKHero.h
import <Foundation/Foundation.h>
@interface SKHero:NSObject
@property(nonatomic,copy)NSString *name;
@property(nonatomic,copy)NSString *icon;
@property(nonatomic,copy)NSString *intro;

+(instancetype)heroWithDict:(NSDictionary *)dict;
-(instancetype)heroWithDict:(NSDictionary *)dict;
@end

//文件:SKHero.m
import "SKHero"
@implementation SKHero
+(instancetype)heroWithDict:(NSDictionary *)dict
{
    return [[self alloc] initWithDict:dict];
}
-(instancetype)heroWithDict:(NSDictionary *)dict
{
    if(self=[super init])
    {
    [self setValueForkeysWithDictionary:dict];    
    
    
    
    }
    return self;
}


@end







英雄展示