·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> [iOS基础控件-6.2]LOL英雄列表UITableView单项显示

[iOS基础控件-6.2]LOL英雄列表UITableView单项显示

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23
A.需求 1.使用只有一个section的TableView来显示LOL 的英雄列表 2.内容包括标题、副标题、图标 3.使用plain样式 4.使用MVC模式   Image(74)   heros.plist 文件结构: Image(75)     这个其实很简单,直接上代码了
 1 //
 2 //  Hero.h
 3 //  LOLHero
 4 //
 5 //  Created by hellovoidworld on 14/12/1.
 6 //  Copyright (c) 2014年 hellovoidworld. All rights reserved.
 7 //
 8 
 9 #import <Foundation/Foundation.h>
10 
11 @interface Hero : NSObject
12 
13 @PRoperty(nonatomic, copy) NSString *icon;
14 @property(nonatomic, copy) NSString *intro;
15 @property(nonatomic, copy) NSString *name;
16 
17 - (instancetype) initWithDictionary:(NSDictionary *) dictionary;
18 + (instancetype) heroWithDictionary:(NSDictionary *) dictionary;
19 + (instancetype) hero;
20 
21 @end
 
 1 //
 2 //  Hero.m
 3 //  LOLHero
 4 //
 5 //  Created by hellovoidworld on 14/12/1.
 6 //  Copyright (c) 2014年 hellovoidworld. All rights reserved.
 7 //
 8 
 9 #import "Hero.h"
10 
11 @implementation Hero
12 
13 - (instancetype) initWithDictionary:(NSDictionary *) dictionary {
14     if (self = [super init]) {
15         self.icon = dictionary[@"icon"];
16         self.intro = dictionary[@"intro"];
17         self.name = dictionary[@"name"];
18     }
19    
20     return self;
21 }
22 
23 + (instancetype) heroWithDictionary:(NSDictionary *) dictionary {
24     return [[self alloc] initWithDictionary:dictionary];
25 }
26 
27 + (instancetype) hero {
28     return [self heroWithDictionary:nil];
29 }
30 
31 @end
 
 1 //
 2 //  ViewController.m
 3 //  LOLHero
 4 //
 5 //  Created by hellovoidworld on 14/12/1.
 6 //  Copyright (c) 2014年 hellovoidworld. All rights reserved.
 7 //
 8 
 9 #import "ViewController.h"
10 #import "Hero.h"
11 
12 @interface ViewController () <UITableViewDataSource>
13 
14 // UITableView
15 @property (weak, nonatomic) IBOutlet UITableView *tableView;
16 
17 // 所有hero资料
18 @property(nonatomic, strong) NSArray *heros;
19 
20 @end
21 
22 @implementation ViewController
23 
24 - (void)viewDidLoad {
25     [super viewDidLoad];
26     // Do any additional setup after loading the view, typically from a nib.
27    
28     // 设置dataSource
29     self.tableView.dataSource = self;
30    
31     // 设置行高
32     self.tableView.rowHeight = 60;
33 }
34 
35 - (void)didReceiveMemoryWarning {
36     [super didReceiveMemoryWarning];
37     // Dispose of any resources that can be recreated.
38 }
39 
40 /** 隐藏状态栏 */
41 - (BOOL)prefersstatusBarHidden {
42     return YES;
43 }
44 
45 /** 延迟加载hero数据 */
46 - (NSArray *) heros {
47     if (nil == _heros) {
48         NSArray *dictArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"heros.plist" ofType:nil]];
49        
50         NSMutableArray *herosArray = [NSMutableArray array];
51         for (NSDictionary *dict in dictArray) {
52             Hero *hero = [Hero heroWithDictionary:dict];
53             [herosArray addObject:hero];
54         }
55        
56         _heros = herosArray;
57     }
58    
59     return _heros;
60 }
61 
62 #pragma mark - 列表方法
63 
64 // section数, 默认是1
65 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
66     return 1;
67 }
68 
69 // 特定section的行数
70 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
71     return self.heros.count;
72 }
73 
74 
75 // 特定行的内容
76 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
77     Hero *hero = self.heros[indexPath.row];
78    
79     // 必须使用"UITableViewCellStyleSubtitle"才能显示副标题
80     UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:nil];
81 
82     // 标题
83     cell.textLabel.text = hero.name;
84    
85     // 副标题
86     cell.detailTextLabel.text = hero.intro;
87    
88     // 图标
89     cell.imageView.image = [UIImage imageNamed:hero.icon];
90    
91     return cell;
92 }
93 
94 @end