如何在不使用导航控制器或导航栏的情况下从xib返回到main.storyboard中的控制器?

时间:2014-10-31 08:02:18

标签: ios objective-c iphone

我正在使用不同的视图控制器制作应用程序。我的主屏幕位于 main.storyboard 中。其余的视图控制器都有自己的 xib .h & .m 文件。我正在尝试从主屏幕导航。

-(IBAction)btnSignUpTapped:(id)sender
{
    SignUpWithEmailViewController * login = [[SignUpWithEmailViewController alloc] init];
    UINavigationController *nav = [[UINavigationController alloc]
                                   initWithRootViewController:login];
    [self presentViewController:nav animated:YES completion:NULL];
}

此代码适用于导航到不同的viewcontroller(在本例中为SignUpwithEmailViewController)。在SignUpWithEmailViewController我有一个后退按钮,它应该让我回到主屏幕。这是我到目前为止所得到的:

-(IBAction)btnBackTapped:(id)sender
{
    ViewController * homeScreen = [[ViewController alloc] init];

    UINavigationController *nav = [[UINavigationController alloc]
                                   initWithRootViewController:homeScreen];
    [self presentViewController:nav animated:YES completion:NULL];
}

但是作为此代码的结果,屏幕变黑,没有任何反应。我该如何解决这个问题?隐藏我正在使用的导航栏

-(void) viewWillAppear:(BOOL)animated
{
[[self navigationController] setNavigationBarHidden:YES animated:NO];
}

1 个答案:

答案 0 :(得分:0)

是的,您必须将名为viewController的插件导入NavigationController, 但如果您不习惯使用模态流 - 关闭presentViewController只需调用:

[self dismissViewControllerAnimated:YES completion:^{

}];

<强>编辑:

可能会更有帮助,只是示例,把它放到主视图控制器:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    UIViewController *c = [[UIViewController alloc] init];
    c.view.backgroundColor = [UIColor redColor];

    [self presentViewController:c animated:YES completion:^{
        [self dismissViewControllerAnimated:YES completion:^{

        }];
    }];
}