标签:
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
标签:
原文地址:http://www.cnblogs.com/Dast1/p/4856140.html