昨天我们学习了Picker的使用,那么今天我们来实现一个稍微复杂一些的小游戏,当然,美化就少了很多,比较简陋,接下来我们按照步骤来实现一下。
首先我们要拖拽两个Label进来,一个用来用作提示,另一个用来显示得分。不是很困难,我们先看一下修改后的xib文件的样式:
同时我们也把按钮显示的文本改成Start了,那么接下来我们看下ETViewController.h类中的代码
#import <UIKit/UIKit.h>
@interface ETViewController : UIViewController<UIPickerViewDelegate,UIPickerViewDataSource>
- (IBAction)chooseActionBtn:(id)sender;
@property (weak, nonatomic) IBOutlet UILabel *currScore;
@property (nonatomic,strong)IBOutlet UIPickerView *actionPicker;
@property (nonatomic,strong)NSArray *column1;
@property (nonatomic,strong)NSArray *column2;
@property (nonatomic,strong)NSArray *column3;
@property (nonatomic,strong)NSArray *column4;
@property (nonatomic,strong)NSArray *column5;
@property (nonatomic,strong)NSArray *column6;
@end
这里的column1~6是表示我们的Picker中有六列
然后就是我们要把chooseActionBtn方法改成下面的代码:
- (IBAction)chooseActionBtn:(id)sender
{
int currentScoreInt=0;
int rowNum=1;
int lastRowVal=-1;
for (int i=0; i<6; i++)
{
int randomVal=random() %[self.column1 count];
if(randomVal==lastRowVal)
{
rowNum++;
}
else
{
rowNum=1;
}
lastRowVal=randomVal;
[actionPicker selectRow:randomVal inComponent:i animated:YES];
[actionPicker reloadComponent:i];
if(rowNum>=3)
{
currentScoreInt+=10;
}
}
NSString *scoreStr=[[NSString alloc] initWithFormat:@"%d",currentScoreInt];
currScore.text=scoreStr;
}
@end
然后我们再要修改ETViewController.m文件中PickerView组件个数,以及每个组件的行数,当然,还要把原先的NSString改为UIView
//picker view中组件的个数
-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView
{
//返回6即可,改为6个Component
return 6;
}
//picker view组件中的row行数
-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
return [self.column1 count];
}
//循环数据源并绑定到picker view上进行展示
#pragma mark Picker Delegate Methods
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {
NSString *arrayName = [[NSString alloc] initWithFormat:@"column%d", component + 1];
NSArray *array = [self valueForKey:arrayName];
return [array objectAtIndex:row];
}
OK,完成,我们来编译运行,看下游戏的效果,首先是初始状态:
然后我们开始试玩一下,嗯哼,点击多次之后终于成功,如下图所示:
当然,也可以修改下得分的字体和颜色,这个大家可以自行美化一下。
2013年05月26日,Eric.Tang 记