过渡到导航视图控制器

光盘

我有以下代码:

- (IBAction)buttonPressed:(UIButton *)sender
{
    //sentder.titleLabel
    NSString *label = [(UIButton *)sender currentTitle];

    if ([label isEqualToString:@"Register"])
    {
        [sender setTitle:@"Registers" forState:UIControlStateNormal];

        RegisterViewController *viewCon = [[RegisterViewController alloc] init];
        RegisterNavigationController *navigation = [[RegisterNavigationController alloc] init];
    [navigation pushViewController:viewCon animated:YES];

        //self performSegueWithIdentifier:@"MySequeIdentifier" sender:];
    }
....

我有一个startController,其中包含以下正确调用的按钮代码。我创建了一个全新的默认registerViewController(UIViewController)和一个registerNavigationContoller(UINavigationController类)。如何获得我的按钮单击动画以创建registerViewController并使该视图控制器具有带有后退按钮的栏?

我做错了吗,startViewController是否应该是UINavigationController,因为它只是UIViewController?如果是这样,我如何摆脱此页面上的顶部栏?

铸造厂

您现有的View Controller(包含此按钮代码的View Controller)需要包含在Navigation Controller中。新的VC也将包含在同一导航控制器中。导航控制器管理这两个子视图控制器之间的标题栏和后退按钮导航。

要将第一个VC嵌入到Nav Controller中:

  • 如果使用情节提要,则可以选择视图控制器场景,然后在菜单中: Editor > Embed In > Navigation Controller

  • 如果在代码中实例化,则首先初始化View Controller,然后将其嵌入到新的nav控制器中,从而:

    UIViewController firstVC;
    firstVC = [[UIViewController alloc] initWithNib:@"nibname" bundle:nil]]   
        //(example of initialising with a xib/nib file)
    UINavigationCOntroller navCon;
    navCon = [UINavigationController alloc] initWithRootViewController:firstVC];
    

    navController

现在,从您的按钮代码中,请您的父级导航控制器来管理过渡:

 RegisterViewController *viewCon = [[RegisterViewController alloc] init];  
    //take care to initialise correctly
    //do you have a nib file? a storyboard scene?
[self.navigationController pushViewController:viewCon animated:YES];

或者,您可以在按钮和第二个情节提要场景之间创建情节提要幻灯片推导功能-它执行与此代码相同的功能。

如果只希望在第二个VC中使用导航栏,而在第一个VC中则不需要,则可以有多种选择。

使用每个视图控制器,您都可以分别控制导航控制器的BOOL属性navigationBarHidden-例如self.navigationController.navigationBarHidden = YES

但是您可能会发现导航栏状态之间的视觉过渡不尽人意,并且可能要考虑其他应用程序设计。例如,您可以从第一个显示第二个视图控制器。在这种情况下,两个vc都不需要导航控制器(第二个vc可以包含它自己的UINavigationBar)。或者提供的视图控制器仍可以嵌入其自己的导航控制器中。无论哪种方式,您都不会在第一个视图控制器上获得自动后退按钮,而是需要自己实现(仅当一个导航控制器正在管理一系列子视图控制器时才提供后退按钮)。

这些只是一些建议,您将必须结合这些以及其他一些想法来找出最适合您的应用程序的想法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

导航控制器自定义过渡动画

如何仅使用Swift使用代码过渡到新的视图控制器

隐藏视图控制器的导航栏

导航控制器推式视图控制器

在OS X的视图控制器之间过渡

交互视图控制器从视图控制器过渡到隐藏状态栏

如何以编程方式使用Swift过渡到不同情节提要中存在的其他视图控制器?

如何在导航视图控制器中关闭整个视图控制器堆栈?

如何以编程方式将视图控制器嵌入导航视图控制器

Swift-过渡到另一个视图控制器(不弹出)

在视图控制器之间快速导航

SwiftUI使用导航链接从模式表过渡到常规视图

Swift:实例化视图控制器以在当前导航堆栈中进行自定义过渡

为什么导航视图控制器返回零个视图控制器?

模态视图中的导航控制器

多视图1视图控制器过渡动画

在导航控制器上按下时视图变暗

iOS 7自定义推送过渡到透明的视图控制器,使视图控制器的视图不可见

在视图控制器之间导航的按钮

包含导航栏的视图控制器之间的自定义过渡

导航控制器:窗口导航控制器中最顶层的视图控制器下方是什么?

Swift:在nstimer倒数计时结束时过渡到新的视图控制器

视图控制器之间的过渡方向

过渡到新的视图控制器

在视图内创建导航控制器

从导航栏视图控制器导航到选项卡栏视图控制器

从导航控制器移回视图控制器?

如何过渡到带有导航栏的视图控制器?

缺少使用导航控制器从第一个视图控制器到第二个视图控制器的过渡