C# xamarin.ios从Web服务检测数据之前加载空uicontrol视图

C# xamarin.ios从Web服务检测数据之前加载空uicontrol视图,c#,iphone,xamarin,xamarin.ios,C#,Iphone,Xamarin,Xamarin.ios,我正在用xamarin开发一个ios应用程序。 我以这种方式创建了一个按钮: var myBtn = new UIButton(UIButtonType.System); myBtn.Frame = new CGRect(xImg, 1180, 200, 100); myBtn.SetTitleColor(UIColor.Yellow, UIControlState.Normal); myBtn.AutoresizingMask = UIViewA

我正在用xamarin开发一个ios应用程序。 我以这种方式创建了一个按钮:

var myBtn = new UIButton(UIButtonType.System);
        myBtn.Frame = new CGRect(xImg, 1180, 200, 100);
        myBtn.SetTitleColor(UIColor.Yellow, UIControlState.Normal);
        myBtn.AutoresizingMask = UIViewAutoresizing.FlexibleWidth;
        myBtn.TouchUpInside += delegate
        {
            NavController.PushViewController(new WebViewController(), false);
        };
WebViewController包含一个webservice调用,因此它会花费几秒钟来检测数据。 当我点击按钮时,应用程序首先调用webservice,然后更改UiViewController。这样我就无法实现

所以我需要这样,当我点击按钮时,首先显示空的UiViewController(带有LoadingOverlay),然后,当webservice调用完成时,显示其余的组件

这是WebViewController:

        public override void ViewDidLoad()
    {
        base.ViewDidLoad();

        Title = "MyTitle";

        var logo = new UIImageView(new CGRect(20, 50, sizes.Width - 40, 130));
        logo.Image = UIImage.FromBundle("logo.jpg");
        View.BackgroundColor = UIColor.Black;

            scrollView = new UIScrollView(new CGRect(20, 180, UIScreen.MainScreen.Bounds.Width - 40, UIScreen.MainScreen.Bounds.Height - 180));
            scrollView.BackgroundColor = UIColor.Black;
            .........
            List<UIImage> imagesList = getImagesList(urlG);
            int count = 0;
            List<UIImageView> imageViewList = new List<UIImageView>();
            List<UIButton> btnList = new List<UIButton>();
            nfloat imgS = getImgSizes();
            nfloat imgY = 0;
            ......
            for (int i = 0; i < imageViewList.Count; i++)
            {
                scrollView.AddSubview(imageViewList[i]);
                scrollView.AddSubview(btnList[i]);
            }
            scrollView.ContentSize = new CGSize(UIScreen.MainScreen.Bounds.Width - 40, ((imagesList.Count / 4) * getImgSizes()) + 150);
            View.AddSubview(logo);
            Add(scrollView);
            View.Add(loadPop);
            .....
        }
    }
public override void ViewDidLoad()
{
base.ViewDidLoad();
Title=“MyTitle”;
var徽标=新的UIImageView(新的CGRect(20,50,大小.宽度-40130));
logo.Image=UIImage.FromBundle(“logo.jpg”);
View.BackgroundColor=UIColor.Black;
scrollView=新的UIScrollView(新的CGRect(20,180,UIScreen.MainScreen.Bounds.Width-40,UIScreen.MainScreen.Bounds.Height-180));
scrollView.BackgroundColor=UIColor.Black;
.........
List-imagesList=getImagesList(urlG);
整数计数=0;
List imageViewList=新列表();
List btnList=新列表();
nfloat imgS=getImgSizes();
nfloat imgY=0;
......
对于(int i=0;i
在web服务调用完成之前,是否在
ViewDidLoad
中阻止主线程?我看不到按钮代码中有任何地方会让它在按下下一个视图控制器之前等待。在数据加载中使用async await。@Rohit我是xamarin的新手,你能更好地解释一下你的意思吗?您是否有一个示例?在web服务调用完成之前,您是否正在阻止
ViewDidLoad
中的主线程?我看不到按钮代码中有任何地方会让它在按下下一个视图控制器之前等待。在数据加载中使用async await。@Rohit我是xamarin的新手,你能更好地解释一下你的意思吗?你有一个例子吗?