Nativescript изменить нижнюю вкладку навигации из кода - PullRequest
0 голосов
/ 23 февраля 2020

Я хочу изменить активную вкладку BottomNavigation, которую, как я знаю, я смогу сделать с

bottomNav.selectedIndex = 0;

, проблема заключается в определении bottomNav. Вот структура приложения

Приложение- Root

<Frame defaultPage="login/login-page"></Frame>

Страница входа в систему переходит на страницу маршрутизатора, содержащую нижнюю навигацию

<Page actionBarHidden="true" xmlns="http://schemas.nativescript.org/tns.xsd">
    <BottomNavigation id="bottomNav" selectedIndex="2">
        ...
        <TabContentItem>
            <Frame id="main" defaultPage="categories/categories-page"></Frame> //I want to be here
        </TabContentItem>
        <TabContentItem>
            <Frame id="gallery" defaultPage="gallery/gallery-page"></Frame>
        </TabContentItem>
        <TabContentItem>
            <Frame id="profile" defaultPage="profile/profile-page"></Frame> //I'm here
        </TabContentItem>
    </BottomNavigation>
</Page>

На странице профиля у меня есть кнопка переключения на основной кадр, но я не могу этого сделать

exports.viewProduct = function(args){
    const product = args.object.pid,
    productFrame = Frame.getFrameById('main'),
    bottomNav = Frame.topmost().getViewById('bottomNav'); //undefined

    bottomNav.selectedIndex = 0;
    productFrame.navigate({
    moduleName: 'product/product-page',
        context: { id: product }
    });
}

1 Ответ

0 голосов
/ 24 февраля 2020

Вы проверяли, какой кадр возвращается Frame.topmost()? Я считаю, что он должен возвращать profile фрейм, поскольку он находится на вершине в данный момент времени Скорее вы должны назвать свой кадр по id здесь:

XML

<Frame id="root" defaultPage="login/login-page"></Frame>

JS

Frame.getFrameById('root').getViewById('bottomNav') // should do the job
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...