Какой лучший способ скрыть вкладку в TabNavigator? - PullRequest
9 голосов
/ 06 мая 2009

Я хотел бы условно скрыть вкладку в TabNavigator. Кажется, что настройка visible не работает должным образом (возможно, потому, что именно так TabNavigator скрывает вкладки, которые в данный момент не выбраны).

Как правильно это сделать?

Ответы [ 5 ]

21 голосов
/ 07 мая 2009

Вы можете сделать это, используя метод getTabAt () TabNavigator, который возвращает Button, составляющую визуальную вкладку. Затем вы можете установить свойство visible этой кнопки. Это немного сложно получить эту настройку с привязками, но это выполнимо.

Вы могли бы также рассмотреть возможность просто отключения вкладки, что можно сделать, установив параметр enable на соответствующем дочернем элементе TabNavigator (для которого visible не работает).

1 голос
/ 07 мая 2009

Возможно, вы захотите проверить проект flexlib . У них есть компонент SuperTabNavigator, который добавляет множество функциональных возможностей в базовый Flex TabNavigator, включая скрытие вкладок (я думаю).

Если вам нужно создать свой собственный компонент, это немного сложнее. Важно знать, что «вкладки» - это кнопки с особым стилем, содержащиеся в компоненте TabBar (затем TabBar содержится в TabNavigator). Тогда вам нужно будет создать подкласс TabNavigator и иметь некоторые свойства для ваших представлений (т. Е. Холсты и т. Д., Добавляемые в TabNavigator), которые связаны со свойствами visible и includeInLayout кнопок TabBar.

По сути, у вас будет что-то вроде:

BindingUtils.bindProperty( tabButton, "visible", view, "someProperty" );
BindingUtils.bindProperty( tabButton, "includeInLayout", view, "someProperty" );
1 голос
/ 06 мая 2009

Что вы подразумеваете под скрыть? Если вы действительно хотите удалить, просто возьмите массив, связанный с данными в TabNavigator, и удалите из него соответствующий элемент.

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

0 голосов
/ 17 мая 2011
var secondTab = tabNavigator.removeChildAt(0);
0 голосов
/ 07 мая 2009

Я не знаю о TabNavigator, но в других контейнерах вы можете установить для свойства includeInLayout значение false, и оно будет игнорироваться. Вам, вероятно, все еще нужно объединить это с visible.

...