dansica Ответов: 1

Как мне перебирать страницы и ждать возвращаемого значения


Здравствуйте, я делаю проект, где мне нужно загрузить файл JSON, и он будет читать файл JSON, и в нем есть список строк.

При циклическом просмотре списка мне нужно позвонить на их конкретные страницы и подождать, пока он завершится, прежде чем перейти к следующей странице в списке. Но каждый раз, когда я это делаю, страница камеры будет переопределять страницу подписи.

Если мой список JSON-это "подпись", "QR", "камера", то он будет идти последовательно. Таким образом, сначала будет называться "подпись", затем "QR", а затем "камера". Но "QR" вызовет камеру, и она переопределит страницу "подпись". Как мне это исправить?

<pre>Private async Task readJson()
        {
            Config config = JsonConvert.DeserializeObject<Config>(json);

            while (config.Steps.Any())
            { 
                var item = config.Steps.First();

                if (item.Equals("Camera"))
                {
                    Console.WriteLine("Camera");
                    BindingContext = new CapturePhotoVM();
                    await (BindingContext as CapturePhotoVM).TakePicture();

                   
                }
                else if (item.Equals("Signature"))
                {
                    Console.WriteLine("Signature");

                    //var navPage = new NavigationPage(this);
                    await Application.Current.MainPage.Navigation.PushModalAsync(new SignaturePage());

                    //await navPage.PushAsync(new SignaturePage());

                }
                else if (item.Equals("QR"))
                {
                    Console.WriteLine("QR");

                    var navPage = new NavigationPage(this);
                    //Application.Current.MainPage = navPage;

                    await navPage.PushAsync(new ScannerPage());
                }

                config.Steps.Remove(item);

            }


Что я уже пробовал:

Я попытался использовать PushModalAsync, но до сих пор не могу заставить его работать.

F-ES Sitecore

Что вы подразумеваете под словом "страница"? Как вы показываете эти страницы?

1 Ответов

Рейтинг:
2

Chris Copeland

Я вижу, что это Xamarin WPF. Я не верю, что PushModalAsync фактически блокируется до тех пор, пока модал не завершится, вместо этого это просто означает, что модал будет асинхронно вставлен в стек навигации. Он все равно вернется сразу же после обновления представления.

Согласно к документации[^] PushAsync завершится, как только будет отображена новая страница. Если вы собираетесь делать это последовательно, вам может понадобиться где-то хранить содержимое JSON и регистрировать события для открытия/закрытия модалов.