我有一个Xamarin.Forms应用程序,我正在使用FreshMvvm框架。
如果我从ViewIsAppearing方法FirstPageModel中这样做的话:
CoreMethods.PushPageModel<SecondPageModel>();我去"SecondPageModel“。那么,当我在"SecondPageModel“中时,如果是这样的话:
CoreMethods.PopPageModel(); 或者按硬后退按钮,或者按标题栏后退按钮在Android中不工作(任何事情发生)。我正在使用FreshMasterDetailNavigationContainer。
在iOS中,工作正常,我回到FirstPageModel。
发布于 2019-05-23 08:04:48
这是因为当页面开始在屏幕上显示时,总是会调用ViewIsAppearing。当您弹出第二页然后转到第一页时,第一页的ViewIsAppearing将再次启动。它造成了一个死气沉沉的循环,并禁止您的应用程序返回第一页。
添加一个属性以避免这样做:
bool isInitialized;
public FirstPageModel()
{
// ...
isInitialized = true;
}
protected async override void ViewIsAppearing(object sender, EventArgs e)
{
base.ViewIsAppearing(sender, e);
if (isInitialized)
{
await Task.Delay(100);
await CoreMethods.PushPageModel<SecondPageModel>();
isInitialized = false;
}
}iOS可以优化此过程,但我仍然建议您添加此判断语句。
更新:
当你的应用程序到达主线程时调用它。
protected override void ViewIsAppearing(object sender, EventArgs e)
{
base.ViewIsAppearing(sender, e);
if (isInitialized)
{
Device.BeginInvokeOnMainThread(() =>
{
CoreMethods.PushPageModel<SecondPageModel>();
isInitialized = false;
});
}
}https://stackoverflow.com/questions/56262354
复制相似问题