UI基础图片浏览器改进1

  上篇文章实现了一个使用UIImageView\UILabel\UIButton实现一个综合的小的图片浏览器,虽然能实现功能,但是代码有很大的问题,这里进行第一次改进:将代码中重复性的代码进行封装,封装成一个方法,用用户点击按钮时,调用点击按钮的响应方法,这个方法中直接调用封装的这个方法.

  下面直接上代码,storyboard拖线跟上篇一样,这里不再重复

  ViewController.m

  

 1 //
 2 //  ViewController.m
 3 //  01-图片浏览器1
 4 //
 5 //  Created by hukezhu on 15/5/12.
 6 //
 7 //
 8 
 9 #import "ViewController.h"
10 
11 @interface ViewController ()
12 /**  界面上最上面显示索引的label*/
13 @property (weak, nonatomic) IBOutlet UILabel *noLabel;
14 /**  显示图片的控件*/
15 @property (weak, nonatomic) IBOutlet UIImageView *iconView;
16 /**  描述图片内容的label*/
17 @property (weak, nonatomic) IBOutlet UILabel *descLabel;
18 /**
19  *  左边按钮的属性,用来控制按钮的不可用状态
20  */
21 @property (weak, nonatomic) IBOutlet UIButton *left;
22 /**
23  *  右边按钮的属性,用来控制按钮的不可用状态
24  */
25 @property (weak, nonatomic) IBOutlet UIButton *right;
26 /**
27  *  索引,记录位置
28  */
29 @property (nonatomic ,assign)int index;
30 /**
31  *  上一张的点击响应方法
32  */
33 - (IBAction)previous;
34 /**
35  *  下一张的点击响应方法
36  */
37 - (IBAction)next;
38 @end
39 
40 @implementation ViewController
41 
42 - (void)viewDidLoad {
43     [super viewDidLoad];
44 
45     //首先将当前计数器设置为-1,然后再调用next方法,即可显示首页面.
46     self.index = -1;
47     [self next];
48 }
49 //发现代码中previous和next方法中的代码基本上一样,属于重复性的,可以将其封装成一个方法
50 
51 - (void)move{
52 
53     switch (self.index) {
54         case 0:
55             self.noLabel.text = @"1/5";
56             self.iconView.image = [UIImage imageNamed:@"biaoqingdi"];
57             self.descLabel.text = @"哥牛逼啊";
58             break;
59         case 1:
60             self.noLabel.text = @"2/5";
61             self.iconView.image = [UIImage imageNamed:@"bingli"];
62             self.descLabel.text = @"亮瞎眼啊";
63             break;
64         case 2:
65             self.noLabel.text = @"3/5";
66             self.iconView.image = [UIImage imageNamed:@"chiniupa"];
67             self.descLabel.text = @"小姑娘吃牛排比杀牛还费劲";
68             break;
69         case 3:
70             self.noLabel.text = @"4/5";
71             self.iconView.image = [UIImage imageNamed:@"danteng"];
72             self.descLabel.text = @"蛋疼";
73             break;
74         case 4:
75             self.noLabel.text = @"5/5";
76             self.iconView.image = [UIImage imageNamed:@"wangba"];
77             self.descLabel.text = @"王八";
78             break;
79             
80     }
81     //设置按钮的不可用状态,当计数器为0时,左边的按钮为不可用状态
82     self.left.enabled = self.index != 0;
83     //当计数器为4时,右边的按钮为不可用状态
84     self.right.enabled = self.index != 4;
85 }
86 - (IBAction)previous{
87 
88     //计数器减一
89     self.index--;
90     [self move];
91 }
92 - (IBAction)next{
93     self.index++;
94     [self move];
95 }
96 @end

  这段代码中,将实现选择的那段代码,封装成了一个move方法,使用的时候直接调用这个move方法即可.代码比较简单,不再重复了.

  分析代码,还是有些问题,我们数据直接写在了move方法中,这种方法不太好,分析数据,发现每个switch选项中,序号设置这一项可以提取出来,而剩下的两个数据可以使用字典来存储,下篇文章,我会再次改进这个代码,将数据存储到字典中.

原文地址:https://www.cnblogs.com/hukezhu/p/4500501.html