嗨Xamarin开发人员,
因此,在一种情况下,用户将从页面A转到页面B。
await Navigation.PushModalAsync(new PageB());
然后从页面B到页面C,在这种情况下,应先关闭页面B,然后再显示页面C
await Navigation.PopModalAsync();
await Navigation.PushModalAsync(new PageC());
但是有了此代码,就不会显示C页,您能帮我做错什么吗?
答案 0 :(得分:2)
但是有了此代码,就不会显示C页,您能帮我做错什么吗?
解决方案:
您应按照以下步骤从 B页中删除<div class="wrapper">
<img id="slide" src="https://via.placeholder.com/536x96" />
</div>
:
await
如果使用Navigation.PopModalAsync();
Navigation.PushModalAsync(new PageC());
异步方法,则在执行async/await
方法时,接口将返回到A页。此时,PopModalAsync
方法的执行将不会响应,因为这是B页中的方法,并且B接口是Pop,在发布Pop之后,此方法将不起作用。因此,异步处理方法不能在B页中使用。
注意:如果 Xamarin Forms(XF)具有像 Android 这样的PushModalAsync(new PageC())
方法,则该页面可以在以下情况下被释放页面跳转。尽管会对视觉效果产生一些影响,但 XF 中的这种处理只能做到这一点。
答案 1 :(得分:1)
在被调用页面中执行PopModalAsync()时,它将在调用页面中触发OnAppearing()事件处理程序。要从模式页面返回后要执行某些操作,您需要执行以下操作:
public class PageA {
private bool returnedFromModal = false;
private async void ShowB_Clicked (object sender, EventArgs e) {
returnedFromModal = false;
await Navigation.PushModalAsync(new NavigationPage(new PageB()));
returnedFromModal = true;
}
protected override async void OnAppearing() {
base.OnAppearing();
if (returnedFromModal) {
returnedFromModal = false;
await Navigation.PushAsync(new PageC());
}
}
}