#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
, который имеет непрозрачную черную обложку. Я не думаю, что вы можете это настроить. Это должно быть так, как есть. Единственный способ, который я вижу, — это создать пользовательский объект.