【问题标题】:How to open NavigationController's root and pass a value?如何打开 NavigationController 的根并传递一个值?
【发布时间】:2017-05-23 19:11:52
【问题描述】:

我正在创建 Xamarin.iOS 应用程序的登录部分。登录时,我想将用户对象传递给 ProjectsViewController。首先,用户输入用户名和密码,然后对其进行验证,最后,一旦验证通过,我想进入名为 ProjectsViewController 的主屏幕。

//first get user from Restful service 
var response = await apiService.GetUserByToken("http://192.168.1.20:55405",
            "/api",
            "/Account/FullUser",
            token.TokenType,
            token.AccessToken);
        //get User object
        var user = (User)response.Result;
        user.Password = password;
        if (response.IsSuccess)
        {
            //loguser is the User object that will be passed to the root
            logUser = user;
        }            

        //get storyboard 
        UIStoryboard board = UIStoryboard.FromName("Main", null);
        ProjectsViewController ctrl = (ProjectsViewController)board.InstantiateViewController("projectsViewController");
        //current user is the propery that I want to access in the next screen
        ctrl.CurrentUser = logUser;
        ctrl.ModalTransitionStyle = UIModalTransitionStyle.CoverVertical;

        UINavigationController nav = (UINavigationController)board.InstantiateViewController("navController");
        nav.ModalTransitionStyle = UIModalTransitionStyle.CrossDissolve;
        //this sends me to the root but the object is not passed
        PresentViewController(nav, true, null);

到目前为止的代码验证用户并将我发送到根屏幕,但对象未通过。请帮忙! 提前致谢!

【问题讨论】:

    标签: c# ios xamarin.ios uinavigationcontroller rootviewcontroller


    【解决方案1】:

    问题是您正在创建 ProjectsViewController 的新实例并设置其 CurrentUser,但您根本没有显示该控制器。

    你应该做的是:

    UINavigationController nav = (UINavigationController)board.InstantiateViewController("navController");
    nav.ModalTransitionStyle = UIModalTransitionStyle.CrossDissolve;
    //New code
    var projectVC = (ProjectsViewController)nav.ViewControllers.FirstOrDefault();
    projectVC.CurrentUser = logUser;
    
    PresentViewController(nav, true, null);
    

    当您从情节提要中实例化:“navController”时,它还将实例化其ProjectsViewController,它位于其ViewControllers 列表中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 2019-01-06
      • 1970-01-01
      相关资源
      最近更新 更多