利用ActionSheet弹出选取框,并在label上显示倒计时的程序。网上有不少代码,但都不完整,现整合了一下,具体代码如下:
-(IBAction)startButton{
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *dateComponents = [gregorian components:(NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit) fromDate:[theDatePicker date]];
hour = [dateComponents hour];
min = [dateComponents minute];
sec = [dateComponents second];
[gregorian release];
countTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerMode) userInfo:nil repeats:YES];
}
-(void)timerMode {
if (sec >= 1) {
sec = sec - 1;
}
else {
min = min - 1;
sec = 59;
}
if (sec == 0 && min == 0 && hour >= 1) {
hour = hour -1;
min = 59;
sec = 59;
}
[self updateLabel];
}
-(void)updateLabel{
if (sec < 10 && min < 10) {
timeLabel.text = [NSString stringWithFormat:@"TIME: %i:0%i:0%i", hour, min, sec];
}
else if (min < 10 && sec > 9) {
timeLabel.text = [NSString stringWithFormat:@"TIME: %i:0%i:%i", hour, min, sec];
}
else if (min > 9 && sec < 10) {
timeLabel.text = [NSString stringWithFormat:@"TIME: %i:%i:0%i", hour, min, sec];
}
else if (min > 9 && sec > 9) {
timeLabel.text = [NSString stringWithFormat:@"TIME: %i:%i:%i", hour, min, sec];
}
if (sec == 0 && min == 0 && hour == 0) {
[countTimer invalidate];
}
}
#pragma mark -
#pragma ActionSheet Method
-(void)DatePickerView
{
pickerViewDate = [[UIActionSheet alloc] initWithTitle:@"How many?"
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
theDatePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0.0, 44.0, 0.0, 0.0)];
theDatePicker.datePickerMode = UIDatePickerModeCountDownTimer;
if(isFirstClick == NO)
[theDatePicker setMaximumDate:maxDate];
theDatePicker.countDownDuration = 1.0;
[theDatePicker addTarget:self action:@selector(dateChanged) forControlEvents:UIControlEventValueChanged];
pickerToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
pickerToolbar.barStyle=UIBarStyleBlackOpaque;
[pickerToolbar sizeToFit];
NSMutableArray *barItems = [[NSMutableArray alloc] init];
UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(DatePickerDoneClick)];
[barItems addObject:flexSpace];
[pickerToolbar setItems:barItems animated:YES];
[pickerViewDate addSubview:pickerToolbar];
[pickerViewDate addSubview:theDatePicker];
[pickerViewDate showInView:self.view];
[pickerViewDate setBounds:CGRectMake(0,0,320, 464)];
}
-(IBAction)dateChanged{
NSDateFormatter *FormatDate = [[NSDateFormatter alloc] init];
[FormatDate setDateFormat:@"YYYY:MM:DD:HH:mm:SS"];
timeLabel.text = [FormatDate stringFromDate:[theDatePicker date]];
maxDate = [theDatePicker date];
NSDate *selected = [theDatePicker date];
}
-(BOOL)closeDatePicker:(id)sender{
[pickerViewDate dismissWithClickedButtonIndex:0 animated:YES];
[pickerToolbar release];
[pickerViewDate release];
return YES;
}
-(IBAction)DatePickerDoneClick{
[self closeDatePicker:self];
//tableview.frame=CGRectMake(0, 44, 320, 416);
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
return 2;
}
// returns the number of rows
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
//return [pickerViewArray count];
return 0;
}