如何在Swift中向UIAlertController(UIAlertView)添加日期选择器?

时间:2014-11-05 21:37:41

标签: ios swift ios8

我有一个应用程序,我需要显示一个弹出窗口来选择日期并将该日期写回视图控制器。

我在网上搜索了很多,但在找到相关解决方案方面并不成功。

非常感谢任何形式的帮助。

2 个答案:

答案 0 :(得分:14)

不要使用任何类型的UIAlertView或UIAlertController。制作拥有视图并弹出它(可能使用现有的视图控制器)。视图可以很小,就像日期选择器一样,您可以在其后面放置阴影视图,就像警报一样。

答案 1 :(得分:0)

这是我的代码:

- (id)initWithDatePicker:(NSString*)title parentView:(UIView*)parentView {
 self = [super init];

 if (self) {
     datePickerView = [[UIDatePicker alloc] init];
     datePickerView.datePickerMode = UIDatePickerModeDateAndTime;
     if (IS_IOS8_AND_UP) {
         alertViewController = [UIAlertController
                                alertControllerWithTitle:EMPTY_STRING
                                message:title
                                preferredStyle:UIAlertControllerStyleActionSheet];
         UIView* aboveBlurLayer = alertViewController.view.subviews[0];
         [aboveBlurLayer addSubview:datePickerView];
         [aboveBlurLayer setWidth:SCREEN_WIDTH - 16];
         [datePickerView setWidth:SCREEN_WIDTH - 16];
         [alertViewController.view setWidth:SCREEN_WIDTH - 16];
         [alertViewController.view setBackgroundColor:[UIColor whiteColor]];

         UIAlertAction* alertAction =
         [UIAlertAction actionWithTitle:EMPTY_STRING
                                  style:UIAlertActionStyleDefault
                                handler:nil];
         [alertViewController addAction:alertAction];
         [alertViewController addAction:alertAction];
         [alertViewController addAction:alertAction];
         [alertViewController addAction:alertAction];

         [datePickerView setBackgroundColor:[UIColor whiteColor]];
         [aboveBlurLayer addSubview:datePickerView];
     } else {
         actionSheet = [[UIActionSheet alloc] initWithTitle:title
                                                   delegate:self
                                          cancelButtonTitle:nil
                                     destructiveButtonTitle:nil
                                          otherButtonTitles:nil];

         [actionSheet addSubview:datePickerView];
     }

     [self addToolBar];
     isDatePicker = YES;
     parent = parentView;
 }   
  return self; 
}

在工具栏上我有两个按钮完成和取消 在完成后,我通过代表发送一个选定日期的电话,并在取消时解雇。 此代码适用于iOS 7和iOS 8