Как перейти на определенную вкладку с помощью TapGesture или нажатия кнопки - PullRequest
0 голосов
/ 06 марта 2020

Цель. Находясь на странице с вкладками, у меня есть рамка и жест касания рамки, при выборе в пределах жеста касания рамки я бы хотел перейти на нужную страницу с вкладками, как если бы выбирал страницу с вкладками.

Я пробовал различные способы навигации, однако они либо будут иметь верхнюю кнопку «Назад», либо не будут отображать нижние вкладки, либо не будут обновлять навигацию по нижнему меню, либо позволят мне go перейти на главную страницу и выбрать первую вкладку.

У меня есть MainPage с 5 страницами с вкладками.

Пример настройки страниц с вкладками: (с помощью views: in xaml для выбора страницы).

<NavigationPage Title="Offers">
            <NavigationPage.Icon>
                <OnPlatform x:TypeArguments="FileImageSource">
                    <On Platform="iOS" Value="tab_offers.png"/>
                    <On Platform="Android" Value="tab_offers.png"/>
                </OnPlatform>
            </NavigationPage.Icon>
            <x:Arguments>
                <views:OffersPage />
            </x:Arguments>
        </NavigationPage>

Код, используемый для получения жеста касания в кадре.

<Frame BackgroundColor="Green" HeightRequest="32" WidthRequest="112" Padding="0" CornerRadius="8" HasShadow="False">

  <Frame.GestureRecognizers>
     <TapGestureRecognizer Tapped="TapGestureRecognizer_OfferPage" /
  </Frame.GestureRecognizers>

  <Label Text="Earn Now" TextColor="White" FontSize="14" HorizontalOptions="Center" VerticalOptions="Center" FontAttributes="Bold"/>
</Frame>

В настоящее время я использую следующий способ навигации:

private async void TapGestureRecognizer_OfferPage(object sender, EventArgs e)
        {

            await Navigation.PushModalAsync(new NavigationPage(new MainPage()));            

        }

По сути, я считаю, что должно быть способ выбора индекса страницы с вкладками или страницы с вкладками из MainPage. Однако не уверен, как правильно его реализовать.

С помощью приведенного выше кода он вернет меня обратно на MainPage, однако на первую загруженную вкладку. Мне нужно, чтобы это было на 4-й вкладке или OffersPage.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

2 голосов
/ 06 марта 2020

Если вы хотите перемещаться между 5 вкладками, вы можете использовать MessagingCenter .

в TabbedPage

public MyTabbedPage()
{
   InitializeComponent();

   MessagingCenter.Subscribe<Object, int>(this, "click", ((arg, idx) => {

        // idx the index of pages in tabbed that you want to navigate

        CurrentPage = this.Children[idx];

   }));




}

и отправить сообщение, когда коснитесь фрейма

 MessagingCenter.Send<object, int>(this,"click",2);// if you want to navigation to the third page .
0 голосов
/ 06 марта 2020

Попробуйте использовать это:

private async void TapGestureRecognizer_OfferPage(object sender, EventArgs e)
        {
             await Navigation.PushAsync(new YourPageName());
        }

Дайте мне знать, если у вас есть запрос.

...