Как представить UIPicker над табличным представлением? - PullRequest
1 голос
/ 29 марта 2011

У меня есть контроллер представления, который реализует представление таблицы из nib-файла, и его выход представления напрямую связан с представлением таблицы в Интерфейсном Разработчике.

В некоторых случаях я пытаюсь вставить UIDatePicker в представление в нижней части экрана, позволить пользователю сделать выбор, а затем сдвинуть его обратно вниз.

Я заставил сборщик скользить по экрану, но моя проблема в том, что, поскольку мне нужно добавить его в виде подобного вида, [self.view addSubview:pickerContainer]; происходит то, что сборщик добавляется в представление таблицыи всякий раз, когда я пытаюсь изменить его значения, весь сборщик перемещается вверх и вниз вместе с таблицей.

Что я должен сделать, чтобы представить DatePicker над представлением таблицы?

Ответы [ 2 ]

1 голос
/ 29 марта 2011

Звучит так, как будто вы должны представить это модально.

[pickerContainer setModalPresentationStyle:UIModalPresentationCurrentContext];
[self presentModalViewController:pickerContainer animated:YES];

И поставить кнопку Готово / Выбрать / и т.д., которая делает это при вызове:

[self dismissModalViewControllerAnimated:YES];

РЕДАКТИРОВАТЬ: Другой вариант - иметь родительский элемент UIViewController с табличным и другим скрытым представлениями.Расположите скрытое представление в нижней части экрана (в верхней части представления таблицы), убедитесь, что элементы управления отключены, и затем вы вызываете:

[UIView animateWithDuration:1.0 /* set number of seconds it takes to slide here */
 animations:^
 {
     [pickerContainer setFrame:/*the position you want it to slide in to*/];
 }
 completion:^(BOOL finished)
 {
     [pickerContainer.picker setEnabled:YES]; // only enabled once the animation is done
     [pickerContainer.doneButton setEnabled:YES]; // same for the button to close the view
 }];

Когда пользователь указывает, что он закончил, выбравdate, анимируйте снова, используя setFrame: назад к исходному местоположению представления, чтобы выдвинуть его, и отключите элементы управления.

0 голосов
/ 28 февраля 2012

Начиная с iOS 3.2, вы можете установить свойство inputView вашего UITextField равным UIPickerView.Это заменит клавиатуру тем, что вы когда-либо применяете к inputView, и представит это представление, если этот textField станет firstResponder.

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