c# - sale - PushAsync no es compatible globalmente en iOS, utilice una página de navegación
mapas iphone no funciona (3)
Probablemente tenga algún código similar a este en su App.xaml.cs
:
public App()
{
InitializeComponent();
var tabs = new TabbedPage();
tabs.Children.Add(new NavTestPage() { Title = "Tab title" });
MainPage = tabs;
}
A cuál debes cambiar:
public App()
{
InitializeComponent();
var tabs = new TabbedPage();
var page = new NavTestPage() { Title = "Page title" };
tabs.Children.Add(new NavigationPage(page) { Title = "Tab title" });
MainPage = tabs;
}
Al ajustar en una página de NavigationPage
, tiene la opción de insertar páginas en la pila de navegación. Un TabbedPage
en sí mismo es solo pestañas con solo 1 página por pestaña. Esto debería darte una estructura como esta:
TabbedPage
NavigationPage
ContentPage
NavigationPage
ContentPage
NavigationPage
ContentPage
Actualización: supongo que lo que estás haciendo es simplemente cambiar ContentPage
a TabbedPage
en tu XAML. No es así como funciona TabbedPage
. Probablemente deberías leer sobre cómo funciona TabbedPage
en primer lugar.
https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/navigation/tabbed-page/
En su caso, probablemente debería crear una nueva página que tenga XAML así:
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:NavTest"
x:Class="NavTest.MyTabbedPage">
<NavigationPage Title="NavTest">
<x:Arguments>
<local:NavTestPage />
</x:Arguments>
</NavigationPage>
</TabbedPage>
Establezca esto como la MainPage
en App.xaml.cs
:
public App()
{
InitializeComponent();
MainPage = new MyTabbedPage();
}
Todo funciona bien cuando manejo el evento Tap de un elemento ListView
, pero cuando uso esto en un TabbedPage
muestra la excepción, por favor proporcione una solución a este problema, gracias de antemano.
Excepción: PushAsync no es compatible globalmente en iOS, por favor use NavigationPage.
Aquí está el Código Xaml:
<?xml version="1.0" encoding="utf-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:NavTest" x:Class="NavTest.NavTestPage" Title="Home">
<ContentPage.Content>
<StackLayout Orientation="Vertical" VerticalOptions="Center">
<Label Text="Welcome to Xamarin Forms!" VerticalOptions="Center" HorizontalOptions="Center" />
<!--<Button Text="Go to " BackgroundColor="Lime" VerticalOptions="Center" Clicked="Handle_Clicked" >
</Button>-->
<ListView x:Name="myListView" ItemSelected="Handle_ItemSelected">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Label Text="{Binding}" VerticalOptions="Center" HorizontalOptions="Center" />
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
</ContentPage>
Aquí está el controlador OnClick:
async void Handle_Clicked(object sender, System.EventArgs e)
{
await Navigation.PushAsync(new Page1());
}
Debería poner su página secundaria de TabbedPage en NavigationPage. Lo siguiente son fragmentos de código de la documentación de Xamarin.
En Xaml:
<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:TabbedPageWithNavigationPage;assembly=TabbedPageWithNavigationPage"
x:Class="TabbedPageWithNavigationPage.MainPage">
<local:TodayPage />
<NavigationPage Title="Schedule" Icon="schedule.png">
<x:Arguments>
<local:SchedulePage />
</x:Arguments>
</NavigationPage>
</TabbedPage>
O en el código:
public class MainPageCS : TabbedPage
{
public MainPageCS ()
{
var navigationPage = new NavigationPage (new SchedulePageCS ());
navigationPage.Icon = "schedule.png";
navigationPage.Title = "Schedule";
Children.Add (new TodayPageCS ());
Children.Add (navigationPage);
}
}
Este error aparecerá solo en iOS.
En App.cs Rootpage (página de inicio), da como a continuación
public App()
{
MainPage=new NavigationPage(new LoginPage());
}
Ahora, podemos usar PushAsyn () en Globally