如何在视图控制器中创build后退button以转到父视图控制器

您好我有一个容器的视图控制器和容器中的一个集合视图的子视图,当用户点击集合视图单元格,它发送给我的详细信息视图控制器,但现在我想要做的是添加一个后退button,在我的详细视图控制器发送给我parentViewController

在这里输入图像说明

案例1 :解决Segue

这将根据您的情况完美工作:

iOS解决Segue

放松Segmentation可以让您“放松”导航堆栈并指定要返回的目的地。

情况2 :PopToRootViewController

如果你的父视图也是你的根视图控制器,那么你可以很容易的使用popToRootViewControllerAnimated:YES

使用方法backButtonTouch创build自己的后退button将其添加到导航栏。

 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Back", nil) style:UIBarButtonItemStyleDone target:self action:@selector(backButtonTouch:)]; 

将以上代码添加到viewDidLoad

 -(void)backButtonTouch:(id)sender{ [self.navigationController popToRootViewControllerAnimated:YES]; } 
  1. 如果要自定义后退button,请先隐藏导航栏

    [self.navigationController setNavigationBarHidden:YES];

  2. 现在添加一个button,并创build其touchUpInside事件,在这种情况下popup控制器

    [self.navigationController popViewControllerAnimated:YES];

这是我的代码回到父视图控制器

  - (IBAction)ActionbtnBack:(id)sender { int flag = 0; for (UIViewController *controller in [[self.navigationController.viewControllers reverseObjectEnumerator] allObjects]) { NSLog(@"> %@",[controller class]); if ([controller isKindOfClass:[YourParentviewcontroller class]]) { flag=1; [self.navigationController popToViewController:controller animated:YES]; break; } else if ([controller isKindOfClass:[YourParentviewcontroller class]]) { flag=1; [self.navigationController popToViewController:controller animated:YES]; break; } } if (flag == 0) { YourParentviewcontroller *MoreVc = [[YourParentviewcontroller alloc] initWithNibName:@"parentViewcontrollerIdentifier" bundle:nil]; [self.navigationController pushViewController:MoreVc animated:YES]; } } 

在这里输入图像说明

在后退button操作上,添加以下行:

 [self.navigationController popToRootViewControllerAnimated:YES]; 

这会将您移到rootViewController