Невозможно перейти на страницу с корневой страницы в приложении xamarin forms ios - PullRequest
0 голосов
/ 08 января 2019

У меня есть приложение Xamarin для форм, которое разработано с использованием Prism. Проблема, с которой я сталкиваюсь в IOS, заключается в том, что я не могу перейти на страницу CreateAccount снизу. Но этот же код отлично работает в UWP.

  protected async override void OnInitialized()
    {
        InitializeComponent();            
        await NavigationService.NavigateAsync($"NavigationPage/LoginPage");
    }

 protected override void RegisterTypes(IContainerRegistry 
 containerRegistry)
    {
     containerRegistry.RegisterForNavigation<CreateAccount, CreateAccountViewModel>();            
   containerRegistry.RegisterForNavigation<LoginPage,LoginViewModel>();
   containerRegistry.RegisterForNavigation<ForgotPassword>();
   }

Когда я заменяю вышеуказанную строку, как показано ниже, происходит навигация, но ViewModel не регистрируется.

 containerRegistry.RegisterForNavigation<CreateAccount>(); 

AppDelegate.cs

[Register("AppDelegate")]
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{        
    public override bool FinishedLaunching(UIApplication app, NSDictionary options)
    {
        global::Xamarin.Forms.Forms.Init();
        LoadApplication(new App(new iOSInitializer()));

        return base.FinishedLaunching(app, options);
    }

}

public class iOSInitializer : IPlatformInitializer
{

    public void RegisterTypes(IContainerRegistry containerRegistry)
    {            
    }
}
}

CreateAccountPageViewModel:

public class CreateAccountViewModel : BasePageViewModel, 
INavigationAware
 {  
  public static INavigationService _navigationService;

  public CreateAccountViewModel(INavigationService navigationService)
        : base(navigationService)
     {
    _navigationService = navigationService;
    }
    } 

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 09 января 2019

Решение:

Попробуйте зарегистрировать NavigationPage в RegisterTypes.

  protected override void RegisterTypes(IContainerRegistry
containerRegistry)
        {
            containerRegistry.RegisterForNavigation<CreateAccount, CreateAccountViewModel>();
            containerRegistry.RegisterForNavigation<LoginPage, LoginViewModel>();
            containerRegistry.RegisterForNavigation<ForgotPassword>();

            //add
            containerRegistry.RegisterForNavigation<NavigationPage>();
        }
...