我正在练习带导航栏的应用程序。我使用UIBarButton从主屏幕转到下一个屏幕。
UIButton *moveLeft = [UIButton buttonWithType:UIButtonTypeCustom];
[moveLeft setTitle:@"Next Screen" forState:UIControlStateNormal];
moveLeft.titleLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:12.0f];
[moveLeft.layer setCornerRadius:4.0f];
[moveLeft.layer setBorderWidth:1.0f];
[moveLeft.layer setBorderColor: [[UIColor redColor] CGColor]];
moveLeft.frame=CGRectMake(200, 100.0, 90.0, 30.0);
[moveLeft setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
[moveLeft addTarget:self action:@selector(moveToNext) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem* barbutton= [[UIBarButtonItem alloc] initWithCustomView:moveLeft];
self.navigationItem.rightBarButtonItem = barbutton;
但现在当第二个屏幕出现时,没有导航栏。 以下是应用程序的屏幕截图
我也尝试了UIBarButton,但第二个屏幕上仍然没有导航栏。
UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithTitle:@"Back"
style:UIBarButtonItemStylePlain
target:nil
action:nil];
[[self navigationItem] setBackBarButtonItem:back];
我的问题如何在第二个屏幕上显示后退按钮?我没有制作任何自定义按钮,但默认也不会自动进入。 请指导我。
答案 0 :(得分:2)
根据您的评论,您将展示下一个视图控制器,而不是此
[self presentViewController:secondScreen animated:YES completion:nil];
这样做
[self.navigationController pushViewController:secondScreen animated:YES]
建议
不应该将subView添加到窗口,而应该设置窗口的rootViewController,这是推荐的方法。所以改变
[self.window addSubview:[navControll view]];
要
self.window.rootViewController = navControll;
答案 1 :(得分:1)
没有人正确回答这个问题,我遇到了同样的问题,而且我自己解决了这个问题。我的解决方案是在子视图控制器之前删除导航控制器,而不是控制桌面控制器到子视图控制器之间的拖动,选择"显示"
答案 2 :(得分:0)
您必须使用UINavigationController
。它将是您的应用程序的根视图控制器。将mainVC放入其中,然后只需pushViewController
秒vc。
您可以通过任何vc的navigationController
方法访问导航控制器(在您的情况下为mainVC)。
答案 3 :(得分:0)
您可以将自定义后退按钮添加到导航栏
UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, button_width, button_height)];
[backButton setImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal];
[backButton addTarget:self action:@selector(backAction) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];