繁体   English   中英

如何更改为另一个视图控制器

[英]How do I change to another view controller

这可能是一个愚蠢的问题,但由于我在其他地方找不到答案,我会在这里提出。

我的问题是:如何更改正在查看的视图控制器。 在我的情况下,我希望用户打开应用程序,如果用户尚未填写设置表单,则应用程序将从主页更改为设置页面

public override void ViewDidLoad()
{
    base.ViewDidLoad();
    //Initial setup check
    dataBase.SetBool(false, "setUpComplete");

    if (dataBase.BoolForKey("setUpComplete") == false)
    {      
    }
    else
    {            
    }
}

感谢任何决定回答此问题的人!

编辑

我的问题解决如下。 我必须将导航控制器置于主页根,然后使用下面的代码确保将其作为另一个类的void ViewDidLoad。

public override void ViewDidLoad()
{
    base.ViewDidLoad();
    //Initial setup check
    dataBase.SetBool(false, "setUpComplete");

    if (dataBase.BoolForKey("setUpComplete") == false)
    { 
        SetupViewController screenTwo = this.Storyboard.InstantiateViewController("SetupViewController") as SetupViewController;
        this.NavigationController.PushViewController(screenTwo, true);
    }
}

这是你在Swift 4中的代码中呈现viewcontroller的方法:

let storyboard = UIStoryboard(name: "Main", bundle: nil)
if let vc = storyboard.instantiateViewController(withIdentifier: IdentifierOfTheVC) as? YourVC {
    self.present(vc, animated: true, completion: nil)
}

您可以通过转到YourVC的身份检查器来设置Storyboard ID,然后填写Storyboard ID字段。

如果你从这里开始第一个viewcontroller,你需要在这里设置rootViewController并推送第一页。

public override void ViewDidLoad()
{
    base.ViewDidLoad();
    dataBase.SetBool(false, "setUpComplete");
    var rootNavigationController = new UINavigationController(); 
    if (dataBase.BoolForKey("setUpComplete") == false)
    {
       var objSetUpViewController=new LoginViewController()
       rootNavigationController.NavigationController.PushViewController (objSetUpViewController, true);
    }
    else
    {
       var objHomeViewController=new HomeViewController()
       rootNavigationController.NavigationController.PushViewController (objHomeViewController, true);
    }
}

从第二个屏幕开始,您可以简单地推送页面

 NavigationController.PushViewController(new viewController2(), true);

(Xamarin.Android示例)我认为你必须有一个启动页面,这是第一页,在OnCreate方法中,你必须放下以下几行代码:(user.SetupExist()--->是一个属性或者如果用户的设置存在则返回true的方法,否则返回false。)

protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Main);
           if(user.SetupExist()){
             var intent=new Intent();
             intent.SetClass(this, typeof(HomePage));
             StartActivity(intent);
           }else
           {
            var intent=new Intent();
             intent.SetClass(this, typeof(SetupPage));
             StartActivity(intent);

           } 

}

对于IOS,将此代码放在ViewDidLoad方法中:

public override void ViewDidLoad()
{
    base.ViewDidLoad();
    if(user.SetupExist())
    {
        App.Current.MainPage = new HomePage();
    }else{
     App.Current.MainPage = new SettingPage();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM