Части UISegmentedControl сворачиваются до нулевой ширины

Ошибка

У кого-нибудь был похожий баг? Элемент управления помещается из Interface Builder и никак не модифицируется кодом. Он работал нормально, пока некоторое время назад после случайной сборки не появилась ошибка. Происходит в двух местах в моем приложении, в то время как в другом контроллере просмотра такая же точная настройка. Во всех случаях элементы управления находятся внутри UINavigationItem. Удаление элемента управления и его повторное добавление ничего не изменило. Это происходит только на реальном устройстве, а не в симуляторе.


person Joonas Trussmann    schedule 07.05.2010    source источник
comment
Если это поможет, у меня это произошло с некоторым кодом. Дома на предыдущей версии Xcode все было хорошо. При работе с 3.2.2 они развалились. Не знаю установленную дома версию.   -  person Daniel Blezek    schedule 07.05.2010
comment
Я так понимаю, вам не удалось решить эту проблему?   -  person Joonas Trussmann    schedule 10.05.2010
comment
Подтверждено, сборка с (а не только с) 3.1.3 исправляет ошибку, хотя она появляется последовательно с 3.2. Думаю, мне придется подать отчет об ошибке.   -  person Joonas Trussmann    schedule 10.05.2010


Ответы (3)


Вы пытались установить явную ширину компонента или настроить свойство автоматического изменения размера элемента управления:

UISegmentedControl не расширяет размер панели навигации/очень сжимает

person Chris Gummer    schedule 04.06.2010
comment
И да и нет. Установка свойства автоматического изменения размера устраняет ошибку, но только тогда, когда контроллер представления не выталкивается на экран с помощью uitabbarcontrollersmoreviewcontroller. То есть, если я устанавливаю выбранный индекс на моей главной вкладке на 5, он отображается нормально, но если я перемещаюсь туда через меню «Дополнительно», это не кости. - person Joonas Trussmann; 07.06.2010
comment
У вас есть образец приложения, демонстрирующий такое поведение, которым вы можете поделиться? - person Chris Gummer; 08.06.2010
comment
Боюсь, в данный момент нет, но я попытаюсь посмотреть, смогу ли я воспроизвести это с новым приложением. - person Joonas Trussmann; 08.06.2010

Вы пробовали создать его программно? Это определенно кажется ошибкой, но такой подход может свести на нет ошибки.

Объявите IBOutlet для UINavigationItem:

IBOutlet UINavigationItem *navItem;

затем, когда он загружается, выполните:

segCont=[[UISegmented Control alloc] initWithItems:[NSArray arrayWithObjects:@"item 1", @"item 2", nil]];

segCont.segmentedControlStyle=UISegmentedControlStyleBar;  //Optional, but in a toolbar it looks best

navItem.titleView=segCont;

[segCont autorelease];

Я не тестировал этот код, но если он не работает, пожалуйста, прокомментируйте... (Однако он все еще может быть под влиянием ошибки)

person Tom H    schedule 09.06.2010
comment
Такой вид побеждает цель загрузки моей иерархии представлений из перьев, но тем не менее я попробую. - person Joonas Trussmann; 10.06.2010

Поскольку ни одно из предложенных решений на самом деле не устранило проблему должным образом, я думаю, что единственным решением, по-видимому, является просто обновление до SDK 4.0, которое, похоже, устраняет проблему.

person Joonas Trussmann    schedule 29.06.2010