0

このカスタム クラスを使用してEAActionSheetPicker、日付用のピッカーと時間用の 2 つ目のアクション シートを作成および表示します。

以下の画面は、このビューのストーリーボードです。

ここに画像の説明を入力

簡単です。終了日ボタンをクリックすると、日付ピッカー付きのアクションシートが表示されます。同様に、[時間] ボタンをタップすると、ピッカーには時間だけが表示されますが、ピッカーには日付 (終了日と同じ) が表示されます。しかし、EAActionSheetPickerデリゲート メソッドで奇妙なことが起こりEAActionSheetPicker:didDismissWithSelection:inTextField:textFieldます。

- (IBAction)endDateSelectionButton:(UIButton *)sender
{
    // Initialization of custom date picker
    self.endDatePicker = [[EAActionSheetPicker alloc] initWithDatePickerMode:UIDatePickerModeDate];

    // Setting style for action sheet
    [self.endDatePicker setActionSheetStyle:UIActionSheetStyleBlackOpaque];

    // Setting data mode for picker to be only date without time
    [self.endDatePicker setDateMode:UIDatePickerModeDate];

    // Uncomment this if you ever want a title
    // [self.endDatePicker setTitle:@"Choose end date"];

    self.endDatePicker.delegate = self;

    // Showing in superview because of the tab bar controller
    [self.endDatePicker showInView:[self.view superview]];
}

// Something doesn't work with time mode
- (IBAction)timeSelectionButton:(UIButton *)sender
{
    self.timePicker = [[EAActionSheetPicker alloc] initWithDatePickerMode:UIDatePickerModeTime];
    [self.timePicker setActionSheetStyle:UIActionSheetStyleBlackOpaque];
    [self.timePicker setDateMode:UIDatePickerModeTime];

    self.timePicker.delegate = self;
    [self.timePicker showInView:[self.view superview]];
}

// Delegates method for getting picked date
- (void)EAActionSheetPicker:(EAActionSheetPicker *)actionSheet didDismissWithSelection:(id)selection inTextField:(UITextField *)textField
{
    // Determining if action sheet date mode is date or time for new project options
    if (actionSheet.dateMode == UIDatePickerModeDate) {
        // Init date formatter for changing the date output for database
        NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
        // Setting data format to be: day-month-year
        [formatter setDateFormat:@"dd-MM-yyyy"];
        NSString *endDate = [formatter stringFromDate:selection];
        self.endDate = selection;

        // Setting button title to display selected date
        [self.endDateButton setTitle:endDate forState:UIControlStateNormal];
    } else if (actionSheet.dateMode == UIDatePickerModeTime) {
        NSLog(@"TIME...");
    }
}
4

1 に答える 1

0

元のコードのバグを見つけて、EAActionStyleSheet自分で正しいものに変更しました。

于 2013-08-05T11:07:52.033 に答える