用后退按钮显示导航控制器

时间:2016-08-26 23:03:27

标签: ios objective-c navigationcontroller

我正在尝试以编程方式显示我已经编码的视图,并给它一个后退按钮,以便用户可以轻松弹回我当前的视图。这是我可以使用的唯一代码,但它没有显示后退按钮!

UIStoryboard *storyboard = self.storyboard;
UIViewController *root = [[[UIApplication sharedApplication] keyWindow] rootViewController];

UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"Privacy"];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:controller];

navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;

[root presentViewController:navigationController  animated:YES completion:nil];

我尝试使用" root"初始化navigationController。在上面的代码中查看viewController,然后按下"控制器"通过pushViewController查看控制器。当我尝试使用" root"带有编辑堆栈跟踪。

如何以编程方式打开带有后退按钮的视图到当前视图?

我已经在stackoverflow上到处查找,并且没有解决这个细微差别的情况。请帮忙!

4 个答案:

答案 0 :(得分:3)

  1. 您不应该使用presentViewController:,而是使用 pushViewController:
  2. 你应该推送viewController 想要从目前在屏幕上的viewController呈现, 并且有导航控制器。
  3. 可能你的UIWindow对象的rootViewController应该是navigationController,而该navigationController的rootViewController应该是你要推送的viewController。

答案 1 :(得分:0)

首先要添加导航控制器,你必须把它放在你的AppDelegate.m

UIStoryboard *sb=[UIStoryboard storyboardWithName:@"Main" bundle:nil];
UIViewController *vc=[sb instantiateViewControllerWithIdentifier:@"View1"];

UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:vc];
self.window.rootViewController=nav;

如果你想点击一个putton或者你可以通过以下方式实现这个目标的推动视图: -

[self.navigationController pushViewController:ViewName animated"YES];

如果你想从那个视图返回,你可以通过弹出视图(以防万一你的后退按钮)来实现: -

[self.navigationController popViewControllerAnimated:YES];

答案 2 :(得分:0)

您的代码是正确的,只需在PrivacyViewController

中创建自定义后退按钮即可

viewDidLoad

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"back_arrow"] style:UIBarButtonItemStylePlain target:self action:@selector(goPrevious)];

方法就像:

- (void)goPrevious {

    [self dismissViewControllerAnimated:TRUE completion:^{

    }];
}

答案 3 :(得分:0)

到目前为止,最简单的方法是将我正在使用的视图嵌入到导航控制器中。在“界面”构建器中,单击视图,然后转到编辑器 - >嵌入 - >导航控制器。

从这里开始,很容易隐藏导航栏本身 - (void)viewWillAppear:animated:

- (void)viewWillAppear:(BOOL)animated {
    //Hide the nav bar for the onboarding screens.
    [[self navigationController] setNavigationBarHidden:YES animated:YES];
}

然后,这是使用自动填充的后退按钮转到另一个页面的代码:

UIStoryboard *storyboard = self.storyboard;
UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:identifier];
[[self navigationController] pushViewController:controller animated:YES];
[[self navigationController] setNavigationBarHidden:NO animated:YES];