diff --git a/tabbar-navigation/README.md b/tabbar-navigation/README.md index 2315983..f65ef10 100644 --- a/tabbar-navigation/README.md +++ b/tabbar-navigation/README.md @@ -1,14 +1,17 @@ tabbar-navigation === -Модуль, упрощающий добавление таббара с обособленной навигацией в каждой табе. Данный модуль базируется на классах модуля `navigation` – `NavigationActivity`, `ViewControllerNavigation`, `ViewController`. +Модуль, упрощающий добавление таббара с обособленной навигацией в каждой табе. Данный модуль базируется на классах модуля [navigation](https://github.com/TouchInstinct/RoboSwag/tree/master/navigation) – `NavigationActivity`, `ViewControllerNavigation`, `ViewController`. -### Подключение +### Основные интерфейсы и классы -```gradle -implementation project(':tabbar-navigation') -``` -### Последовательность необходимых действий с основными классами для организации навигации: +`BottomNavigationActivity` – абстрактный класс, наследуемый от класса `NavigationActivity` и содержащий в себе 2 объекта: +* `navigation` – объект, используемый для навигации на уровне `Activity`. При работе с навигацией используя этот объект таббар скрывается на открываемом экране, и переключиться на какую-нибудь другую табу нельзя. +* `innerNavigation` – объект, используемый для навигации вннутри табы. При работе с навигацией используя этот объект таббар остается видимым на открываемом экране, таким образом сохраняя возможность переключаться по остальным табам таббара. + +`BottomNavigationFragment` – абстраткный класс, наследуемый от `Fragment` и содержащий в себе логику по настройке навигации используя вложенный объект `BottomNavigationController`. + +#### Последовательность необходимых действий с основными классами для организации навигации: 1. Отнаследовать главную `Activity` приложения от `BottomNavigationActivity` и переопределить следующие поля: @@ -25,12 +28,12 @@ implementation project(':tabbar-navigation') ***Количество кнопок в таббаре может быть произвольным*** -### Интерфейс для работы с таббаром +#### Дополнительно +1. В классе ```BottomNavigationFragment``` можно также переопределить поле ```val reselectListener: (() -> Unit)```, отвечающее за повторное нажатие на уже открытую табу. По умолчанию происходит переход к низу стека фрагментов открытой табы – ```getNavigationActivity().innerNavigation.up()``` -Для навигации используются объекты-наследники класса `ViewControllerNavigation` +2. Объекты ```innerNavigation``` в классе ```BottomNavigationActivity``` и ```navigation``` в классе ```NavigationActivity``` помечены как ```open```, давая тем самым возможность добавить кастомную логику переопределив их. -1. Для навигации внутри табы необходимо использовать объект ```activity.innerNavigation```. При использовании этого метода таббар остается видимым на открываемом экране, таким образом сохраняя возможность переключаться по остальным табам таббара. -2. Для навигации на уровне ```Activity``` необходимо использовать объект ```activity.navigation```. При использовании этого метода таббар скрывается на открываемом экране, и переключиться на какую-нибудь другую табу нельзя. +3. В случае, если открыта любая таба кроме главной (```topLevelViewControllerId```) со значением ```backStackEntryCount = 0```, нажатие на системную кнопку "Назад" предварительно откроет главную табу, прежде чем отработает действие кнопки по умолчанию. ### Примеры @@ -114,11 +117,16 @@ class MainViewController( } ``` -### Дополнительно +### Зависимости -1. В классе ```BottomNavigationFragment``` можно также переопределить поле ```val reselectListener: (() -> Unit)```, отвечающее за повторное нажатие на уже открытую табу. По умолчанию происходит переход к низу стека фрагментов открытой табы – ```getNavigationActivity().innerNavigation.up()``` +Поскольку модуль базируется на классах модуля [navigation](https://github.com/TouchInstinct/RoboSwag/tree/master/navigation), то необходимо подключить его. -2. Объекты ```innerNavigation``` в классе ```BottomNavigationActivity``` и ```navigation``` в классе ```NavigationActivity``` помечены как ```open```, давая тем самым возможность добавить кастомную логику переопределив их. +```gradle +implementation project(':navigation') +``` -3. В случае, если открыта любая таба кроме главной (```topLevelViewControllerId```) со значением ```backStackEntryCount = 0```, нажатие на системную кнопку "Назад" предварительно откроет главную табу, прежде чем отработает действие кнопки по умолчанию. +### Подключение +```gradle +implementation project(':tabbar-navigation') +```