有啥方法可以导航到 UInavigationcontroller 堆栈中间的 Viewcontroller
Posted
技术标签:
【中文标题】有啥方法可以导航到 UInavigationcontroller 堆栈中间的 Viewcontroller【英文标题】:Is there any way that I can navigate to Viewcontroller which is middle of the UInavigationcontroller stack有什么方法可以导航到 UInavigationcontroller 堆栈中间的 Viewcontroller 【发布时间】:2016-12-08 08:21:38 【问题描述】:我有 Collection View Controller PatientList
-> 在选择单元格时导航到 PatientdetailView
-> 在单击按钮时导航到 startDignosisView
。这是导航控制器堆栈。现在从患者列表中,我有按钮 “添加” 导航到 AddpatientView
,我必须从那里导航到 StartdignosisView
而不会干扰导航堆栈。我该怎么做?
【问题讨论】:
Arpana 你在用故事板吗? 问得更清楚,你的问题不能100%理解! 您能详细分享您的问题吗?您的问题无法 100% 理解 【参考方案1】:for (UIViewController *controller in self.navigationController.viewControllers)
if ([controller isKindOfClass:[NeededViewController class]])
[self.navigationController popToViewController:controller
animated:YES];
break;
【讨论】:
我的导航堆栈是 -PatientListView->detailView->StartDiagosisview.. 患者列表视图有一个名为 Add 的按钮,该按钮导航到 AddPatientView。现在从 AddpatientView 有一个按钮可以将我导航到 StartDiagnosisView。在 AddPatient 我使用上面的代码为 (PatientListCardView *controller in self.navigationController.viewControllers) if ([controller isKindOfClass:[self class]]) [self.navigationController popToViewController:controller animated:YES]; break; 我做错了吗 @ArpanaSakpal 我只能帮助您提供解决方案...无法代表您编写代码.. 抱歉【参考方案2】:if let viewControllers = self.navigationController?.viewControllers
var newStack: [UIViewController] = []
for viewController in viewControllers
newStack.append(viewController)
if viewController is StartdignosisView
break
self.navigationController?.viewControllers = newStack
【讨论】:
目标C请 如果你愿意,你应该在你的问题中标记objective C
!!顺便说一句,我已经编辑了你的问题!【参考方案3】:
试试这样:
some *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"some identifier you add to a vc in the storyboard"];
[self.navigationController pushViewController:vc animated:YES];
只需将标识符设置为该视图控制器的情节提要。
【讨论】:
【参考方案4】:如果您不使用情节提要,请按照以下步骤操作:
查看是否添加患者,然后直接导航到 StartDignosisVC,然后您将无法弹出到 PatientDetailVC
你可以从这两个中选择任何一个:
第一:
尝试展示您的 AddPatientVC,添加新的然后将其关闭并按照您的旧堆栈路径。
第二: 一个 ADD 按钮操作像这样实例化您的 AddpatientView:
AddPatientVC *obj = [storyboard instantiateViewControllerWithIdentifier:@"AddPatientVC"];
同样导航到 StartdignosisView 并设置一个您来自 AddPatientVC 的标志:
StartDignosisVC *obj = [storyboard instantiateViewControllerWithIdentifier:@"StartDignosisVC"];
obj.isFromAddPatientView = true
当您从 StartDignosisVC 按返回按钮时,检查您是否来自 AddPatientVC 以将其直接弹出到患者列表。
如果您使用的是故事板,那么您可以执行以下操作,请参见随附的屏幕截图:
【讨论】:
感谢您的回答 Dheeraj,但我没有使用 Storyboard【参考方案5】:感谢 Mayank 的回答:以下代码适用于我的情况。 [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];
【讨论】:
以上是关于有啥方法可以导航到 UInavigationcontroller 堆栈中间的 Viewcontroller的主要内容,如果未能解决你的问题,请参考以下文章
Xcode:在调试时,有啥方法可以阻止它在最前面的窗口中打开导航器?
警告:尝试在已呈现 <RCTModalHostViewController> 的 <RNNsideMenuController> 上呈现 <UINavigationCon