iOS上不支持全局支持PushAsync,请使用NavigationPage

当我处理ListView项目的Tap事件时,一切正常,但是当我在TabbedPage它时,它显示exception请提前解决此问题。

例外:iOS上不支持全局支持PushAsync,请使用NavigationPage。

这是Xaml代码:

       

这是OnClick处理程序:

  async void Handle_Clicked(object sender, System.EventArgs e) { await Navigation.PushAsync(new Page1()); } 

仅在iOS中运行时会出现此错误。

在App.cs Rootpage(起始页)中给出如下所示

  public App() { MainPage=new NavigationPage(new LoginPage()); } 

现在,我们可以在全球使用PushAsyn()

您可能在App.xaml.cs有一些与此类似的代码:

 public App() { InitializeComponent(); var tabs = new TabbedPage(); tabs.Children.Add(new NavTestPage() { Title = "Tab title" }); MainPage = tabs; } 

你应该改为:

 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; } 

通过包装在NavigationPage您可以选择将页面推送到导航堆栈。 TabbedPage本身就是每个选项卡只有1页的选项卡。 这应该给你一个这样的结构:

 TabbedPage NavigationPage ContentPage NavigationPage ContentPage NavigationPage ContentPage 

更新:我猜你正在做的只是在你的XAML中将ContentPage更改为TabbedPage 。 这不是TabbedPage工作方式。 您可能应该首先了解TabbedPage实际工作方式。

https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/navigation/tabbed-page/

在您的情况下,您可能应该创建一个具有XAML的新页面,如下所示:

        

将其设置为App.xaml.csMainPage

 public App() { InitializeComponent(); MainPage = new MyTabbedPage(); } 

您应该将TabbedPage子页面放入NavigationPage。 以下是Xamarin文档中的代码片段。

在Xaml中:

         

或者在代码中:

 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); } } 

在此错误中,它会找到根页面,如果我们使用主详细信息页面,那么我们只需要为详细信息页面设置导航。 因此,以下将是最佳解决方案。

 ((RootPage)Application.Current.MainPage).Detail.Navigation.PushAsync(new SearchPage());