【问题标题】:Not able to navigate to a page from root page in xamarin forms ios app无法从 xamarin 表单 ios 应用程序中的根页面导航到页面
【发布时间】:2019-06-02 19:59:23
【问题描述】:

我有一个使用 Prism 开发的 Xamarin 表单应用程序。 我在 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;
    }
    } 

感谢任何帮助。

【问题讨论】:

  • 您是否尝试在 NavigationPage/LoginPage 之前删除 $ 并检查?
  • 是的,我尝试在 NavigationPage/LoginPage 之前删除 $,但它仍然无法正常工作 @hashimks

标签: c# xamarin.forms xamarin.ios prism


【解决方案1】:

解决方案:

尝试在RegisterTypes 中注册NavigationPage

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

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

【讨论】:

    猜你喜欢
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2021-01-09
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多