UIActionSheet с датой выбора внутри навигации и обрезанной панелью вкладок

#iphone #objective-c #uitabbarcontroller #uidatepicker

#iPhone #objective-c #uitabbarcontroller #uidatepicker

Вопрос:

итак, я потратил чудовищное количество времени, пытаясь создать таблицу действий средства выбора даты (чтобы она выглядела лучше, чем обычный полноэкранный режим), и она просто не хочет загружаться в нужном месте. В настоящее время отображается таблица действий, в которой обрезано около 25% (возможно, только высота панели вкладок).

Я просмотрел почти каждую тему StackOverflow, которую смог найти, что означает, что я попытался создать указатель на мой appdelegate и выполнить showInView: [[окно appdelegate] view], а также showFromTabBar: [self TabBarController] TabBar и showFromTabBar[self parentViewController] TabBarController] TabBar]. Каждая перестановка showInView или showFromTabBar приводит к смещению средства выбора даты примерно на высоту панели вкладок.

Просто для пояснения, представление, из которого я запускаю таблицу действий, — это представление внутри панели навигации внутри панели вкладок.

 UIActionSheet *dateSheet = [[UIActionSheet alloc] initWithTitle:@"Action Sheet Message"
                                                       delegate:self
                                              cancelButtonTitle:@"nil
                                         destructiveButtonTitle:@nil 
                                              otherButtonTitles:nil];

UIDatePicker *datePicker = [[[UIDatePicker alloc] init] autorelease];
[dateSheet addSubview:datePicker];
[dateSheet showFromTabBar:[[self tabBarController]tabBar]];
[dateSheet release];
  

Если бы кто-нибудь мог дать мне представление о том, что я делаю неправильно, это было бы высоко оценено.

Спасибо.

Комментарии:

1. Вы пробовали вводить свой указатель даты с помощью инициализатора initWithFrame? Я думаю, что таким образом вы можете разместить свой указатель даты везде, где захотите.

2. Нет, я еще не пробовал это… Я изучу это. Спасибо

3. Я только что попытался использовать CGRect и initWithFrame… Я смог поместить средство выбора даты в нужное место, изменив значение y на отрицательное значение, но теперь я вообще не могу выбрать средство выбора даты… здесь я действительно в тупике

4. Вы имеете в виду, что средство выбора данных отключено?

Ответ №1:

Обычно UIActionSheet объект вычисляет свою высоту на основе кнопок, которые он должен показывать, которых в вашем случае нет. Таким образом, его высота минимальна, и вы видите только часть подвида ( datePicker ). Обходным решением было бы объявить соответствующий фрейм следующим образом,

 [dateSheet addSubview:datePicker];
[dateSheet showFromTabBar:[[self tabBarController]tabBar]];
[dateSheet setFrame:appropriateFrame];
[dateSheet release];
  

Проверьте, каковы правильные значения для appropriateFrame , и используйте их. Мы позаботимся об анимации в нужном месте снизу.

Комментарии:

1. Спасибо за ваше предложение, кажется, все работает правильно, хотя у меня возникает небольшая проблема. Когда я открываю таблицу действий, фон становится непрозрачно-черным, и я не могу видеть сквозь свою таблицу действий, так что это выглядит действительно плохо. Я попытался установить для него значение Black Transluscent, которым является остальной мой пользовательский интерфейс, и он по-прежнему выглядит черным. Есть идеи, как это исправить? Кроме этого, ваше решение наконец решило проблему, спасибо!

2. Я предполагаю, что вы говорите о UIDatePicker , который имеет непрозрачную черную обложку. Я не думаю, что вы можете это настроить. Это должно быть так, как есть. Единственный способ, который я вижу, — это создать пользовательский объект.