我在我的应用程序中的几页之前有一个模态视图,用于显示全屏赞助商图像。
在我的ViewModel
我有它加载一些图像,然后在调用Close(this)
之前延迟。这适用于侧边栏标记为ResetRoot
的任何页面。但是任何作为堆栈一部分的页面都会忽略创建模态而不是模态本身的页面。
public async override void ViewAppeared()
{
base.ViewAppeared();
if (_sponsors.Count() > 1)
{
foreach (var sponsor in _sponsors)
{
Image = sponsor.Image;
await Task.Delay((AppSettings.DefaultSponsorDisplayTimeInSeconds * 1000) / _sponsors.Count());
}
}
else
{
Image = _sponsors.First().Image;
await Task.Delay((AppSettings.DefaultSponsorDisplayTimeInSeconds * 1000));
}
await NavigationService.Close(this);
}
更新:立即工作。我不得不在我的自定义演示者中覆盖Close方法。
public override void Close(IMvxViewModel toClose)
{
var hasModal = ModalViewControllers.Any();
if (hasModal)
CloseModalViewController(toClose);
else
base.Close(toClose);
}
只检查当前堆栈上是否加载了任何模态视图,并手动调用CloseModalViewController关闭模式版本,只关闭导航堆栈上的最后一项。