我有一个较长的运行操作,我想同步运行(稍后我会看异步)。
我正在使用这里的覆盖代码 - http://docs.xamarin.com/recipes/ios/standard_controls/popovers/display_a_loading_message
这是我的测试代码 -
public override void ViewDidAppear (bool animated)
{
base.ViewDidAppear (animated);
loadingOverlay = new LoadingOverlay (UIScreen.MainScreen.Bounds);
View.Add (loadingOverlay);
int i = 0;
while (i < 5000)
{
Console.WriteLine(i);
i++;
}
loadingOverlay.Hide ();
}
但是最初的覆盖没有显示,只有while循环完成后的Hide动画?
我可以像这样产生黑客/解决方法 -
public override void ViewDidAppear (bool animated)
{
base.ViewDidAppear (animated);
loadingOverlay = new LoadingOverlay (UIScreen.MainScreen.Bounds);
View.Add (loadingOverlay);
NSTimer nstimer = NSTimer.CreateScheduledTimer (1, () => {
int i = 0;
while (i < 5000) {
Console.WriteLine (i);
i++;
}
loadingOverlay.Hide ();
});
}
但是有人可以向我解释为什么会发生这种情况,以及如何正确编写代码,以便 IOS 在开始循环之前将叠加层绘制到屏幕上。