1

在我的应用程序的 ViewController 中,我有 3 个不同的项目:

@property (weak, nonatomic) IBOutlet UIBarButtonItem *dateSelect;
@property (weak, nonatomic) IBOutlet UIToolbar *dateToolbar;
@property (weak, nonatomic) IBOutlet UIDatePicker *datePicker;

这 3 个项目也在我的故事板文件中定义。

当我单击 dataSelect UIBarButtonItem 时,我需要能够显示 datePicker 和 dateToolbar。

在以前的项目中,我使用 UITextField 的 inputView 显示了 dataPicker 及其工具栏(带有“确定”和“取消”按钮)

self.date.inputView = self.datePicker;
self.date.inputAccessoryView = self.dateToolbar;

由于 UIBarButtonItem 没有任何 inputView 属性,有没有类似的方法呢?

4

2 回答 2

0

我认为您应该设置 UIBarButtonItem 的目标操作来创建选择器

-(void) createPicker {
    datePicker = [[UIPickerView alloc] init];
    datePicker.frame = CGRectMake(0, 200, 320, 240);
    datePicker.delegate = self;
    datePicker.dataSource = self;
    datePicker.showsSelectionIndicator = YES;

    [self.view addSubview:datePicker];
    if(!_isToolBarShow) {
    _isToolBarShow = YES;
    toolDismiss.frame = CGRectMake(0, 160, 320, 40);
    }
}

要删除,您可以对 OK/Cancel 按钮执行目标操作

- (IBAction) dismissKeyBoardBtnAction:(id)sender {

    if (datePicker != nil) {
        [datePicker removeFromSuperview];
        [datePicker release];
        datePicker = nil;
                _isToolBarShow = NO;
        toolDismiss.frame = CGRectMake(0, 480, toolDismiss.frame.size.width, toolDismiss.frame.size.height);
    }
}
于 2013-04-23T22:48:19.603 回答
0

我建议的方法是定义一个带有选择器和工具栏的视图控制器并将其显示在弹出窗口中,因此在按钮按下动作本身中,您可以通过显示此弹出窗口来显示/添加值

解雇和传递此方法中的值将需要代表。这是一种可重用的方式

于 2013-04-23T20:40:51.933 回答