如何在视图控制器中创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]; }
-
如果要自定义后退button,请先隐藏导航栏
[self.navigationController setNavigationBarHidden:YES];
-
现在添加一个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
。