Индекс выходил за пределы допустимого диапазона при переходе между страницами вперед и назад ⇐ IOS
Индекс выходил за пределы допустимого диапазона при переходе между страницами вперед и назад
У меня есть проект, написанный на C# MAUI 8. Приложение создано с использованием Shell. Проблема возникает, когда приложение развертывается на iPhone или в симуляторе (VS2022 в сочетании с Mac с XCode). У меня никогда не было возможности получить некоторый опыт работы с устройствами Apple, поэтому каждый совет/подсказка будет для меня ценным.
Ситуация: для навигации между страницами я использую await Shell.Current.Navigation.PushAsync(somePage) и await Shell.Current.Navigation.PopAsync() .
Предположим, у меня есть страницы A, B и C. Используя методы, упомянутые выше, я хочу добиться такого потока навигации: A -(PushAsync)> B -(PushAsync)> C -(PopAsync и здесь возникает исключение)> B< /п> Сообщение: Индекс вышел за пределы допустимого диапазона. Должно быть неотрицательным и меньше размера коллекции. (Параметр «индекс»)
Источник: Microsoft.IOS
StackTrace: at ObjCRuntime.Runtime.ThrowException(IntPtr gchandle) в /Users/builder/azdo/_work/1/s/xamarin-macios/src/ObjCRuntime/Runtime.cs :строка 2594 в UIKit.UIApplication.UIApplicationMain(Int32 argc, String[] argv, IntPtr PrincipalClassName, IntPtr DelegateClassName) в /Users/builder/azdo/_work/1/s/xamarin-macios/src/UIKit/UIApplication.cs: строка 60 в UIKit.UIApplication.Main(String[] args, Type PrincipalClass, Type DelegateClass) в /Users/builder/azdo/_work/1/s/xamarin-macios/src/UIKit/UIApplication.cs: строка 94 в MyApp .Program.Main(String[] args) в X:\Projects\MyApp\Platforms\iOS\Program.cs:строка 13
Содержимое MyApp/Platforms/iOS/Program.cs
Программа общедоступного класса { static void Main(string[] args) { UIApplication.Main(args, null, typeof(AppDelegate)); } } Что мне теперь делать? Как отладить это исключение?
Я пытался заменить Push и Pops с помощью GoToAsyncs, но эффект тот же.
Весь код отлично работает на устройствах Android.
публичный частичный класс AppShell: Shell { общедоступная оболочка приложения() { ИнициализироватьКомпонент(); } } MauiProgram.cs
публичный статический класс MauiProgram { общедоступный статический MauiApp CreateMauiApp() { вар строитель = MauiApp.CreateBuilder(); строитель .UseMauiApp() .UseMauiCommunityToolkit() .ConfigureFonts(шрифты => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); fonts.AddFont("FA6-Solid-900.otf", "FA6Solid"); }); вар а = Сборка.GetExecutingAssembly(); используя varstream = a.GetManifestResourceStream("MyApp.appsettings.json"); вар конфигурация = новый ConfigurationBuilder() .AddJsonStream(поток) .Строить(); builder.Configuration.AddConfiguration(конфигурация); builder.Services.AddSingleton(); builder.Services.AddTransient(); builder.Services.AddSingleton(); builder.Services.AddTransient(); вернуть строитель.Build(); } }
У меня есть проект, написанный на C# MAUI 8. Приложение создано с использованием Shell. Проблема возникает, когда приложение развертывается на iPhone или в симуляторе (VS2022 в сочетании с Mac с XCode). У меня никогда не было возможности получить некоторый опыт работы с устройствами Apple, поэтому каждый совет/подсказка будет для меня ценным.
Ситуация: для навигации между страницами я использую await Shell.Current.Navigation.PushAsync(somePage) и await Shell.Current.Navigation.PopAsync() .
Предположим, у меня есть страницы A, B и C. Используя методы, упомянутые выше, я хочу добиться такого потока навигации: A -(PushAsync)> B -(PushAsync)> C -(PopAsync и здесь возникает исключение)> B< /п> Сообщение: Индекс вышел за пределы допустимого диапазона. Должно быть неотрицательным и меньше размера коллекции. (Параметр «индекс»)
Источник: Microsoft.IOS
StackTrace: at ObjCRuntime.Runtime.ThrowException(IntPtr gchandle) в /Users/builder/azdo/_work/1/s/xamarin-macios/src/ObjCRuntime/Runtime.cs :строка 2594 в UIKit.UIApplication.UIApplicationMain(Int32 argc, String[] argv, IntPtr PrincipalClassName, IntPtr DelegateClassName) в /Users/builder/azdo/_work/1/s/xamarin-macios/src/UIKit/UIApplication.cs: строка 60 в UIKit.UIApplication.Main(String[] args, Type PrincipalClass, Type DelegateClass) в /Users/builder/azdo/_work/1/s/xamarin-macios/src/UIKit/UIApplication.cs: строка 94 в MyApp .Program.Main(String[] args) в X:\Projects\MyApp\Platforms\iOS\Program.cs:строка 13
Содержимое MyApp/Platforms/iOS/Program.cs
Программа общедоступного класса { static void Main(string[] args) { UIApplication.Main(args, null, typeof(AppDelegate)); } } Что мне теперь делать? Как отладить это исключение?
Я пытался заменить Push и Pops с помощью GoToAsyncs, но эффект тот же.
Весь код отлично работает на устройствах Android.
публичный частичный класс AppShell: Shell { общедоступная оболочка приложения() { ИнициализироватьКомпонент(); } } MauiProgram.cs
публичный статический класс MauiProgram { общедоступный статический MauiApp CreateMauiApp() { вар строитель = MauiApp.CreateBuilder(); строитель .UseMauiApp() .UseMauiCommunityToolkit() .ConfigureFonts(шрифты => { fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular"); fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold"); fonts.AddFont("FA6-Solid-900.otf", "FA6Solid"); }); вар а = Сборка.GetExecutingAssembly(); используя varstream = a.GetManifestResourceStream("MyApp.appsettings.json"); вар конфигурация = новый ConfigurationBuilder() .AddJsonStream(поток) .Строить(); builder.Configuration.AddConfiguration(конфигурация); builder.Services.AddSingleton(); builder.Services.AddTransient(); builder.Services.AddSingleton(); builder.Services.AddTransient(); вернуть строитель.Build(); } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение