自定义的UIActionSheet ,网上找了好久,都没有完整的解决办法,于是自己 经过查找资料,然后根据自己的项目需要做了一些改动,得到了一个完整版的,自定义的UIActionSheet,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| -(void) setUpDatePicker { self.actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; UISegmentedControl *cancelButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"取消"]]; UISegmentedControl *confirmButton =[[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"确定"]]; [self.actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent]; self.datePicker = [[UIDatePicker alloc] init]; self.datePicker.datePickerMode = UIDatePickerModeDate; [self.datePicker addTarget:self action:@selector(dateChanged:) forControlEvents:UIControlEventValueChanged]; [self.actionSheet addSubview:self.datePicker]; [self.actionSheet showInView:self.view]; [self.actionSheet setBounds:CGRectMake(0,0,320, 500)]; CGRect pickerRect; pickerRect = self.datePicker.bounds; pickerRect.origin.y = -50; self.datePicker.bounds = pickerRect; cancelButton.momentary = YES; cancelButton.frame = CGRectMake(10.0f, 7.0f, 65.0f, 32.0f); cancelButton.segmentedControlStyle = UISegmentedControlStyleBar; [cancelButton addTarget:self action:@selector(DatePickerDoneClick:) forControlEvents:UIControlEventValueChanged]; [self.actionSheet addSubview:cancelButton];
cancelButton.tag = 1; confirmButton.momentary = YES; confirmButton.frame = CGRectMake(245.0f, 7.0f, 65.0f, 32.0f); confirmButton.segmentedControlStyle = UISegmentedControlStyleBar; [confirmButton addTarget:self action:@selector(DatePickerDoneClick:) forControlEvents:UIControlEventValueChanged]; [self.actionSheet addSubview:confirmButton];
confirmButton.tag = 2; [self.actionSheet showInView:self.view]; [self.actionSheet setBounds:CGRectMake(0,0, 320, 500)]; }
-(void) DatePickerDoneClick:(id) sender { UIButton *button = (UIButton *)sender; if(button.tag == 1) { [self.actionSheet dismissWithClickedButtonIndex:0 animated:YES]; } if(button.tag == 2) { [self.actionSheet dismissWithClickedButtonIndex:0 animated:YES]; } }
-(void) dateChanged:(id)sender { NSDate *dateValue = [NSDate date]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; dateValue = ((UIDatePicker *)sender).date; self.teleplayDate.text = [dateFormatter stringFromDate:dateValue]; }
|
这里简单的解释一下:
-(void) setUpDatePicker方法用于调用UIDatePicker
-(void) DatePickerDoneClick:(id) sender方法用于实现隐藏UIdatePicker
-(void) dateChanged:(id)sender方法实现获取日期结果值的方法。
如果没有实现效果,别忘记加上协议,这个是比较容易忘记的