码迷,mamicode.com
首页 > 其他好文 > 详细

UIPickerView应用--点菜系统

时间:2015-10-05 20:47:07      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

 

  1 //
  2 
  3 //  ViewController.m
  4 
  5 //  151005UI+01点菜系统
  6 
  7 //
  8 
  9 //  Created by LongMa on 15/10/5.
 10 
 11 //  Copyright © 2015年 CZ. All rights reserved.
 12 
 13 //
 14 
 15  
 16 
 17 #import "ViewController.h"
 18 
 19  
 20 
 21 @interface ViewController ()<UIPickerViewDataSource,UIPickerViewDelegate>
 22 
 23 @property (nonatomic, strong) NSArray *goodsArr;
 24 
 25 @property (weak, nonatomic) IBOutlet UILabel *fruitLbl;
 26 
 27  
 28 
 29 @property (weak, nonatomic) IBOutlet UILabel *mainfoodLbl;
 30 
 31 @property (weak, nonatomic) IBOutlet UILabel *drinkLbl;
 32 
 33 - (IBAction)random;
 34 
 35 @property (weak, nonatomic) IBOutlet UIPickerView *pickerView;
 36 
 37  
 38 
 39 @property (nonatomic, strong) NSMutableArray *oldNum;
 40 
 41 @end
 42 
 43  
 44 
 45 @implementation ViewController
 46 
 47  
 48 
 49 #pragma mark -  懒加载,不能封装,因为plist元素格式不相同
 50 
 51 - (NSArray *)goodsArr
 52 
 53 {
 54 
 55   if (nil == _goodsArr)
 56 
 57   {
 58 
 59     NSString *path = [[NSBundle mainBundle]pathForResource:@"goods.plist" ofType:nil];
 60 
 61     NSArray  *arr = [NSArray arrayWithContentsOfFile:path];
 62 
 63     _goodsArr = arr;
 64 
 65   }
 66 
 67   return _goodsArr;
 68 
 69 }
 70 
 71  
 72 
 73 - (void)viewDidLoad
 74 
 75 {
 76 
 77   [super viewDidLoad];
 78 
 79   //  NSLog(@"%@",self.goodsArr);
 80 
 81   self.fruitLbl.text = self.goodsArr[0][0];
 82 
 83   self.mainfoodLbl.text = self.goodsArr[1][0];
 84 
 85   self.drinkLbl.text = self.goodsArr[2][0];
 86 
 87   
 88 
 89 #warning 注意:必须先分配内存空间给可变数组,不然存addObject的数据存哪啊
 90 
 91 #warning 注意:岂能放随机事件里?放那可是每次都清空啊!
 92 
 93   self.oldNum = [NSMutableArray array];
 94 
 95 }
 96 
 97  
 98 
 99  
100 
101 - (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
102 
103 {
104 
105   switch (component)
106 
107   {
108 
109     case 0:
110 
111       self.fruitLbl.text = self.goodsArr[0][row];
112 
113       break;
114 
115     case 1:
116 
117       self.mainfoodLbl.text = self.goodsArr[1][row];
118 
119       break;
120 
121     case 2:
122 
123       self.drinkLbl.text = self.goodsArr[2][row];
124 
125       break;
126 
127     default:
128 
129       break;
130 
131   }
132 
133   
134 
135 }
136 
137  
138 
139 #pragma mark -  required数据源俩方法
140 
141 - (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
142 
143 {
144 
145   return 3;
146 
147 }
148 
149  
150 
151 - (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
152 
153 {
154 
155   NSArray *item = self.goodsArr[component];
156 
157   return item.count;
158 
159 }
160 
161  
162 
163 #pragma mark -  代理方法来显示数据,这个方法不是像tableView那样在对应dataSource方法中
164 
165  
166 
167 - (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component
168 
169 {
170 
171   return self.goodsArr[component][row];
172 
173 }
174 
175  
176 
177  
178 
179 - (void)didReceiveMemoryWarning {
180 
181   [super didReceiveMemoryWarning];
182 
183   // Dispose of any resources that can be recreated.
184 
185 }
186 
187  
188 
189 #pragma mark -  随机菜单
190 
191 - (IBAction)random
192 
193 {
194 
195   int randomNum = 0;
196 
197   int goodsArrCount = (int )self.goodsArr.count;
198 
199   for (int i = 0; i < goodsArrCount; i++)
200 
201   {
202 
203     int totalNum = (int)[self.goodsArr[i] count];
204 
205     
206 
207     //    防随机数与上次重复
208 
209 #warning 注意:md,空数组下标不能为0!用firstObject后面要配合去掉第一位元素,好复杂,居然想出来了!汗
210 
211     randomNum = [self.oldNum.firstObject intValue];
212 
213     NSLog(@"第%d组上次%d", i, randomNum);
214 
215     while (randomNum == [self.oldNum.firstObject intValue])
216 
217     {
218 
219       randomNum = arc4random_uniform(totalNum);
220 
221     }
222 
223     NSLog(@"第%d组这次%d", i, randomNum);
224 
225     
226 
227     [self pickerView:self.pickerView didSelectRow:randomNum inComponent:i];
228 
229     
230 
231     //    记录随机数
232 
233     NSNumber *num1 = @(randomNum);
234 
235     [self.oldNum addObject: num1];
236 
237     
238 
239     //    去掉首元素,保证循环一次记录的只剩下这次循环的3个数。
240 
241     //    第一次循环随机的情况,不能执行下一句代码
242 
243     if(self.oldNum.count > self.goodsArr.count)
244 
245     {
246 
247 //      使得oldNum数组中始终只有这次循环的数按顺序存储,上次循环产生的数依次移除。
248 
249       [self.oldNum removeObjectAtIndex:0];
250 
251     }
252 
253     NSLog(@"循环结束oldNum数组中元素有%lu个",self.oldNum.count);
254 
255     //    让pickerView根据随机数动起来?
256 
257     [self.pickerView selectRow:randomNum inComponent:i animated:YES];
258 
259   }
260 
261   NSLog(@"_____________________________");
262 
263 }
264 
265 @end
266 
267  

 

UIPickerView应用--点菜系统

标签:

原文地址:http://www.cnblogs.com/Dast1/p/4856140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!