需求:
1.显示当前图片序号/总图片数
2.显示图片
3.上一张图片、下一张图片转换
4.显示图片描述
A.数据的加载方式
1.逐个加载、处理
2.使用数组、字典分离数据和逻辑
3.延迟加载
将初始化放在getter初始化,当需要的数据不存在才初始化
4.使用plist
存储数据在外部文件,剥离数据和逻辑代码
不要使用带”info”的名字,会跟系统文件混淆
a.使用NSBundle获得手机全路径
1 if (_imageData == nil) { 2 // 初始化数据 3 // File: 全路径 4 // NSBoundle: 一个NSBoundle代表一个文件夹 5 // 利用mainBundle就可以访问手机里面的任何资源 6 NSBundle *bundle = [NSBundle mainBundle]; 7 8 // 获得imageData.plist的全路径 9 NSString *path = [bundle pathForResource:@"imageDate" ofType:@"plist"]; 10 _imageData = [NSArray arrayWithContentsOfFile:path]; 11 }
b. plist文件的解析过程
逐层解析、封装
c.转换图片
1 #pragma mark 转换图片 2 - (void) changeData { 3 // 1.设置当前图片的序号标题 4 self.noLabel.text = [NSString stringWithFormat:@"%d/%d", self.index + 1, self.imageData.count]; 5 6 // 2.取出当前的图片数据 7 NSDictionary *currentImageData = self.imageData[self.index]; 8 9 // 3.设置图片 10 self.iconView.image = [UIImage imageNamed:currentImageData[IconKey]]; 11 12 // 4.设置图片描述 13 self.descLabel.text = currentImageData[DescKey]; 14 15 // 5.改变按钮状态 16 self.previousButton.enabled = (self.index != 0); 17 self.nextButton.enabled = (self.index != self.imageData.count - 1); 18 } 19 20 #pragma mark 上一张 21 - (IBAction)previous { 22 self.index--; 23 [self changeData]; 24 } 25 26 #pragma mark 下一张 27 - (IBAction)next { 28 self.index++; 29 [self changeData]; 30 } 31 @end