在IOS中不使用导航控制器的后退按钮

时间:2017-08-07 07:05:06

标签: ios objective-c

我没有使用我的视图控制器嵌入导航控制器。现在我正在使用代码返回主屏幕,使用后退按钮,但没有任何显示,我不知道为什么。我不想在我的vc中使用导航控制器。这是代码,

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"car_marker.png"]
                                                               style:UIBarButtonItemStylePlain
                                                              target:self.navigationController
                                                              action:@selector(popViewControllerAnimated:)];
self.navigationItem.leftBarButtonItem = backButton;

它应该只是这样, enter image description here

4 个答案:

答案 0 :(得分:1)

您需要更改方法,因为如果没有navigation controller,则无法弹出。

您应该将viewcontroller嵌入navigation controller,然后可以隐藏[[self navigationController] setNavigationBarHidden:YES animated:YES];,然后您可以添加任何类型的自定义按钮来执行弹出操作。

用于向视图添加自定义后退按钮

- (void)addCustomBackButtonToView
{
    UIButton *backButton = [[UIButton alloc] initWithFrame: CGRectMake(20, 20, 44.0f, 30.0f)];
    [backButton setImage:[UIImage imageNamed:@"back.png"]  forState:UIControlStateNormal];
    [backButton addTarget:self action:@selector(popVC) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:backButton];
}

- (void) popVC{
  [self.navigationController popViewControllerAnimated:YES];
}

答案 1 :(得分:0)

您可以通过以下代码self.navigationController.navigationBar.isHidden = true

隐藏导航控制器

并使用 swipegesture选项向后移动,即使您必须使用导航控制器,@ iPeter 也有一个有效点。

答案 2 :(得分:0)

1)首先添加两个ViewControllers作为初始控制器(入口点)。

2)在两个ViewController上添加您希望拥有的视图。

3)在两个视图上添加按钮作为子视图。

4)从firstButton创建segue - >(使用show) - >第二控制器。

5)从第二个 - >(使用show) - >第一控制器。

见下图:

enter image description here

这不是执行pop / push的首选方式。您必须使用导航控制器(它类似于您推送的控制器的堆栈),它将为您提供默认的“后退”按钮,或者您可以创建自定义。

enter image description here

答案 3 :(得分:0)

由于未使用导航控制器,因此无法推送或弹出视图控制器。尝试使用Present&解除可以从任何控制器Instace调用的控制器。

步骤1:呈现给“显示没有导航栏但后退按钮的控制器”

UIButton *backBtn = [[UIButton alloc] initWithFrame: CGRectMake(20.0f, 20.0f, 50.0f, 30.0f)];
[backBtn setTitle:@"back" forState:UIControlStateNormal];
[backBtn addTarget:self action:@selector(dismissViewController) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:backBtn];

第2步:在ViewDidLoad中添加backBatton

- (无效)回加{

xticklabels

}

步骤3:Dismisscontroller返回上一个场景

- (void)dismissViewController {

[self dismissViewControllerAnimated:NO completion:nil];

}

相关问题