Я создал UIActionSheet и добавил поверх него UIPickerView. Теперь я хочу добавить две кнопки справа и слева от заголовка панели навигации UIActionSheet. Как я могу это сделать?Добавление UIBarButtonItem в панель навигации UIActionSheet (UIDatePicker)
Это то, что я сделал до сих пор:
- (IBAction)userDidClickedOnSelectDate:(id)sender
{
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Select your birthday date:" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Select", nil];
[actionSheet showInView:self.view];
[actionSheet setFrame:CGRectMake(0, 100, 570, 383)];
}
Я пытаюсь добавить UIButton таким образом, но я не могу понять, почему я не могу видеть его в поле зрения. Когда я проверяю subviews UIActionSheet, он там (может быть, где-то внизу).
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet
{
UIDatePicker *pickerView = [[UIDatePicker alloc] initWithFrame:CGRectMake(10, 50, 50, 216)];
// Configure picker...
[pickerView setDatePickerMode:UIDatePickerModeDate];
[pickerView setTag:ACTION_SHEET_PICKER_TAG];
// Add picker to action sheet
[actionSheet addSubview:pickerView];
// Add button to the action sheet
UIButton *buttonCancel = [UIButton buttonWithType:UIButtonTypeSystem];
[buttonCancel setFrame:CGRectMake(5, 100, 200, 200)];
[buttonCancel setTitle:@"close" forState:UIControlStateNormal];
[buttonCancel setBackgroundColor:[UIColor redColor]];
[actionSheet addSubview:buttonCancel];
// Gets an array af all of the subviews of our actionSheet
NSArray *subviews = [actionSheet subviews];
for (id button in subviews) {
if ([button isKindOfClass:[UIButton class]]) {
[button setUserInteractionEnabled:NO];
[button setHidden:YES];
}
}
}
Вот как это выглядит:
выясню там способ достичь UIActionSheet панель навигации или панель инструментов (где находится название) и добавить кнопку на Вверх.
Заранее благодарен.
По словам людей, ответ, я уже удалось создать лучшее представление сборщика, что представлено то же самое, но ручки и построить путь намного лучше. Я создал UIViewController и добавил UIDatePicker и UIToolBar с кнопками сверху. Чем назвал это так:
- (IBAction)userDidClickedOnSelectDate:(id)sender
{
CustomDatePicker *customPicker = [[CustomDatePicker alloc] initWithNibName:@"CustomDatePicker" bundle:nil];
customPicker.delegate = self;
customPicker.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCustom;
[self presentViewController:customPicker animated:YES completion:nil];
}
Я alsvo создал делегат, который говорит мне, когда отменяют и Молодцы кнопки были нажаты:
- (void)datePickerDidCancelled:(CustomDatePicker *)picker
{
[self dismissViewControllerAnimated:YES completion:nil];
}
- (void)datePicker:(CustomDatePicker *)picker dateDidSelected:(NSDate *)date
{
NSLog(@"selectedDate: %@", date);
[self dismissViewControllerAnimated:YES completion:nil];
}
Вы уверены, что хотите использовать для этого лист действий? Звучит скорее как модальный вид лучше ... – Wain
это похоже на очень грязную технику вроде того, как делать 'addSubview' на объекте' UIAlertView'. Я сомневаюсь, что Apple будет в порядке. – staticVoidMan