Установка UIDatePicker в таблицу UIActionSheet

Я пытаюсь получить UIDatePicker с UIButton, чтобы он появился в таблице UIActionSheet. К сожалению, он обрезается, и весь выбор даты не отображается. Я еще не пытался добавить UIButton. Может ли кто-нибудь предложить, чтобы все представление полностью соответствовало? Я не уверен, как добавить правильные размеры, поскольку у UIActionSheet, похоже, нет конструктора -initWithFrame: type.

 UIActionSheet *menu = [[UIActionSheet alloc] initWithTitle:@"Date Picker" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:nil]; // Add the picker UIDatePicker *pickerView = [[UIDatePicker alloc] init]; pickerView.datePickerMode = UIDatePickerModeDate; [menu addSubview:pickerView]; [menu showInView:self.view]; [pickerView release]; [menu release]; 

Я также пробовал что-то похожее на:

 UIActionSheet *menu = [[UIActionSheet alloc] initWithFrame:CGRectMake(200.0, 200.0, 100.0f, 100.0f)]; 

Когоры, конечно, не реалистичны, но они, похоже, не влияют на положение / размер UIActionSheet.

Вы можете использовать что-то вроде этого (отрегулируйте координаты):

  UIActionSheet *menu = [[UIActionSheet alloc] initWithTitle:@"Date Picker" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:nil]; // Add the picker UIDatePicker *pickerView = [[UIDatePicker alloc] init]; pickerView.datePickerMode = UIDatePickerModeDate; [menu addSubview:pickerView]; [menu showInView:self.view]; [menu setBounds:CGRectMake(0,0,320, 500)]; CGRect pickerRect = pickerView.bounds; pickerRect.origin.y = -100; pickerView.bounds = pickerRect; [pickerView release]; [menu release]; 

Но лучше создать полноэкранный режим с помощью UIDatePicker и панели навигации. Например, пример UICatalog -> Pickers из iPhone DevCenter.

Попробуйте добавить следующую строку для решения проблем с отключенными кнопками

 [menu sendSubviewToBack:pickerView]; 

Ответ Дмитрия почти прав. Тем не менее, рамка листа действий слишком мала, и поэтому касание около нижней части сборщика игнорируется. Я исправил эти проблемы:

 UIActionSheet *menu = [[UIActionSheet alloc] initWithTitle:@"Date Picker" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"OK",nil]; // Add the picker UIDatePicker *pickerView = [[UIDatePicker alloc] init]; pickerView.datePickerMode = UIDatePickerModeTime; [menu addSubview:pickerView]; [menu showInView:_mainView]; CGRect menuRect = menu.frame; CGFloat orgHeight = menuRect.size.height; menuRect.origin.y -= 214; //height of picker menuRect.size.height = orgHeight+214; menu.frame = menuRect; CGRect pickerRect = pickerView.frame; pickerRect.origin.y = orgHeight; pickerView.frame = pickerRect; [pickerView release]; [menu release]; 

Это работает для меня

 NSString *title = UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation) ? @"\n\n\n\n\n\n\n\n\n" : @"\n\n\n\n\n\n\n\n\n\n\n\n" ; UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:[NSString stringWithFormat:@"%@%@", title, NSLocalizedString(@"SelectADateKey", @"")] delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:@"Ok", nil]; [actionSheet showInView:self.view]; UIDatePicker *datePicker = [[[UIDatePicker alloc] init] autorelease]; datePicker.datePickerMode = UIDatePickerModeDate; [actionSheet addSubview:datePicker]; 

немного сложно, но это работает!

Кнопки сверху, сборщик внизу:

  UIActionSheet *menu = [[UIActionSheet alloc] initWithTitle:@"Date Picker" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"OK",nil]; // Add the picker UIDatePicker *pickerView = [[UIDatePicker alloc] init]; pickerView.datePickerMode = UIDatePickerModeTime; [menu addSubview:pickerView]; [menu showInView:_mainView]; CGRect menuRect = menu.frame; menuRect.origin.y -= 214; menuRect.size.height = 300; menu.frame = menuRect; CGRect pickerRect = pickerView.frame; pickerRect.origin.y = 174; pickerView.frame = pickerRect; [pickerView release]; [menu release]; 

Убедитесь, что вы отобразите таблицу UIActionSheet в правильном представлении, когда внутри UITabBarController, чтобы избежать проблем с взаимодействием внизу:

[actionSheet showInView:self.parentViewController.tabBarController.view];

Возможно, напрямую не отвечает на конкретный вопрос (как настроить UIDatePicker), но для реализации UIActionSheet, который представляет UIDatePicker (также и другие), см. ActionSheetPicker . Из этого Readme:

Легко представить ActionSheet с помощью PickerView, позволяя пользователю выбирать из ряда неизменяемых параметров. На основе раскрывающегося списка HTML, найденного в mobilesafari.

Также:

Некоторый код, полученный из сообщения Марсио в Stack Overflow [ Добавить UIPickerView и кнопку в листе действий – Как? ]

Даже если вы не используете код, это хорошее чтение, прежде чем вы откажетесь от своего собственного.


Обновить:

Эта версия устарела: вместо этого используйте ActionSheetPicker-3.0 .

  • Типы в объективе-c на iPhone
  • Как изменить заголовок кнопки «Назад» на панели навигации
  • Есть ли какие-либо frameworks для выделения текста в pdf-файле после рендеринга на iphone
  • Невозможно добавить элементы в NSMutableArray ivar
  • Как запустить UITableView на последней ячейке?
  • iOS HTTP-запрос в фоновом режиме
  • Когда вы делаете подчеркивание перед переменной экземпляра?
  • Создайте эскиз или изображение AVPlayer в текущее время
  • Сохранить фотографии в пользовательский альбом в iPhones Photo Library
  • Добавление неизвестного количества строк в «Статические ячейки» UITableView
  • Ошибка UIActivityViewController на iOS 8 iPads
  • Interesting Posts
    Давайте будем гением компьютера.