Objective c 检测打开uiviewcontroller的父级

Objective c 检测打开uiviewcontroller的父级,objective-c,uitableview,uiviewcontroller,uinavigationcontroller,Objective C,Uitableview,Uiviewcontroller,Uinavigationcontroller,我有两个不同的场景调用同一个uiviewcontroller, 情景1: 在主uiviewcontroller中,单击按钮可创建虚拟导航器,并按如下方式显示: UINavigationController* dummyNavigation = [[UINavigationController alloc]init]; [dummyNavigation addChildViewController:bViewController]; [self presentViewController:dumm

我有两个不同的场景调用同一个uiviewcontroller, 情景1: 在主uiviewcontroller中,单击按钮可创建虚拟导航器,并按如下方式显示:

UINavigationController* dummyNavigation = [[UINavigationController alloc]init];
[dummyNavigation addChildViewController:bViewController];
[self presentViewController:dummyNavigation animated:NO completion:NULL];
[self.navigationController pushViewController:bViewController animated:NO];
情景2: 在主uiviewcontroller中,单击一个按钮打开其中的uitableviewcontroller,每次单击一行打开bViewController,如下所示:

UINavigationController* dummyNavigation = [[UINavigationController alloc]init];
[dummyNavigation addChildViewController:bViewController];
[self presentViewController:dummyNavigation animated:NO completion:NULL];
[self.navigationController pushViewController:bViewController animated:NO];
我已将bViewController的导航栏设置为隐藏

[self.navigationController setNavigationBarHidden:YES];
并创建了一个按钮,用此代码替换导航的后退按钮

[self dismissViewControllerAnimated:YES completion:NULL];

问题:在这两种情况下,“后退”按钮代码都会返回主uiviewcontroller,但在情况2中,预期会在解除时返回uitableviewcontroller,如果它位于导航控制器中,则弹出,否则将解除

if (self.navigationController) {
    [self.navigationController popViewControllerAnimated:YES];
} else {
    [self dismissViewControllerAnimated:YES completion:nil];
}

您的回答不正确,因为如果self.navigationController在场景1中始终为true,则存在dummyNavigation,而场景2则是uitableviewcontroller的navigationController