我在Android和iOS上都有xamrin.forms项目。我只有简单的两页,我从另一页调用其中一页。在android上,一切都正常工作,但在iOS上,任何对表单的调用(navigation.PushAsync、DisplayAlert…(都无法正常工作(什么都不做(,直到我将应用程序置于睡眠状态(将其置于后台(,然后当我重新加载时,一切都开始正常工作。
这就是我在App.xaml.cs中创建第一个页面的方式
var page = new NavigationPage(new FirstPage());
MainPage = page;
我的第一页的按钮命令调用这个:
FormsNavigation.PushAsync(secondPage, true);
我一直试图将Push包装到Device.BeginVokeOnMainThread,但没有结果。
在Xamarin.Forms中,使用NavigationPage
导航到ContentPage
时,请使用await Navigation.PushAsync
。
而且,因为所有UI动画都必须在主UI线程上调用,所以我建议将其包装为Device.InvokeOnMainThreadAsync
。
async Task NavigateToSecondPage()
{
var secondPage = new SecondPage();
await Device.InvokeOnMainThreadAsync(() => Navigation.PushAsync(secondPage, true));
}