在 UIPopover 中显示 UIDatePicker [英] Displaying a UIDatePicker inside of a UIPopover

查看:19
本文介绍了在 UIPopover 中显示 UIDatePicker的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用以下代码在用户单击 UIButton 时显示的 UIPopover 中显示 UIDatePicker.>

问题是,它显示在一个尴尬的位置,我想在有额外空间的 datePicker 上方添加一个 UIToolBar.这将有 canceldone 按钮.我怎样才能做到这一点?显示它的按钮是出生日期之一.

- (IBAction)dateOfBirthButtonPressed:(id)sender{UIViewController* popoverContent = [[UIViewController alloc] init];UIView *popoverView = [[UIView alloc] init];popoverView.backgroundColor = [UIColor blackColor];UIDatePicker *datePicker=[[UIDatePicker alloc]init];datePicker.frame=CGRectMake(0,44,320, 216);datePicker.datePickerMode = UIDatePickerModeDateAndTime;[datePicker setMinuteInterval:5];[datePicker setTag:10];//[datePicker addTarget:self action:@selector(dateChanged) forControlEvents:UIControlEventValueChanged];[popoverView addSubview:datePicker];popoverContent.view = popoverView;UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];popoverController.delegate=self;[popover内容发布];[popoverController setPopoverContentSize:CGSizeMake(320, 264) 动画:NO];[popoverController presentPopoverFromRect:self.dateOfBirthButton.frame inView:self.view allowedArrowDirections:UIPopoverArrowDirectionAny animation:YES];}

解决方案

是否有理由不能只使用 UIToolbar?

UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame: CGRectMake(0.0, 0.0, 320.0, 44.0)];UIBarButtonItem* cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemCancel目标:自己动作:@选择器(取消)];UIBarButtonItem* space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemFlexibleSpace目标:无行动:无];UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemDone目标:自己动作:@selector(done)];NSMutableArray* toolbarItems = [NSMutableArray 数组];[toolbarItems addObject:cancelButton];[toolbarItems addObject:space];[toolbarItems addObject:doneButton];[取消按钮释放];[doneButton 释放];【空间释放】;工具栏.项目=工具栏项目;

然后只需将工具栏添加到您的视图中.确保正确调整大小并实现 donecancel 选择器.

I'm using the following code to display a UIDatePicker within a UIPopover that is displayed when a user clicks a UIButton.

The problem is, it is being displayed in an awkward position and I want to add a UIToolBar above the datePicker where there is extra space. This will have cancel and done button. How can I accomplish this? The button that it is displayed from is the Date of Birth one.

- (IBAction)dateOfBirthButtonPressed:(id)sender{
    UIViewController* popoverContent = [[UIViewController alloc] init];

    UIView *popoverView = [[UIView alloc] init];
    popoverView.backgroundColor = [UIColor blackColor];

    UIDatePicker *datePicker=[[UIDatePicker alloc]init];
    datePicker.frame=CGRectMake(0,44,320, 216);
    datePicker.datePickerMode = UIDatePickerModeDateAndTime;
    [datePicker setMinuteInterval:5];
    [datePicker setTag:10];
//    [datePicker addTarget:self action:@selector(dateChanged) forControlEvents:UIControlEventValueChanged];
    [popoverView addSubview:datePicker];

    popoverContent.view = popoverView;
    UIPopoverController *popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];
    popoverController.delegate=self;
    [popoverContent release];

    [popoverController setPopoverContentSize:CGSizeMake(320, 264) animated:NO];
    [popoverController presentPopoverFromRect:self.dateOfBirthButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}

解决方案

Is there a reason you couldn't just use a UIToolbar?

UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame: CGRectMake(0.0, 0.0, 320.0, 44.0)];
UIBarButtonItem* cancelButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemCancel
                                                                              target: self
                                                                              action: @selector(cancel)];
UIBarButtonItem* space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemFlexibleSpace
                                                                       target: nil
                                                                       action: nil];
UIBarButtonItem* doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemDone
                                                                            target: self
                                                                            action: @selector(done)];

NSMutableArray* toolbarItems = [NSMutableArray array];
[toolbarItems addObject:cancelButton];
[toolbarItems addObject:space];
[toolbarItems addObject:doneButton];
[cancelButton release];
[doneButton release];
[space release];
toolbar.items = toolbarItems;

Then just add the toolbar to your view. Make sure to size it correctly and implement the done and cancel selectors.

这篇关于在 UIPopover 中显示 UIDatePicker的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆