自定义的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];
// Add the picker
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];//[NSString stringWithFormat:@"%@",dateValue];
}

这里简单的解释一下:

  • -(void) setUpDatePicker方法用于调用UIDatePicker

  • -(void) DatePickerDoneClick:(id) sender方法用于实现隐藏UIdatePicker

  • -(void) dateChanged:(id)sender方法实现获取日期结果值的方法。

如果没有实现效果,别忘记加上协议,这个是比较容易忘记的