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.cs
的MainPage
:
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());