Ank*_*yas 48 iphone uinavigationcontroller popviewcontroller
我正在使用导航应用程序.我将First ViewController推送到Second ViewController,从Second ViewController推送到Third ViewController.现在我想从Third ViewController弹出到First ViewController.我正在使用下面的代码执行此任务,但我的应用程序崩溃了.
请任何机构给我一些适当的指导.我不能使用pop到rootViewController,因为它是不同的viewController.提前致谢...
在第三个ViewControler中我写了这个:
FirstViewCtr *x=[[FirstViewCtr alloc] initWithNibName:@"FirstViewCtr" bundle:nil];
[self.navigationController popToViewController:x animated:NO];
Run Code Online (Sandbox Code Playgroud)
Ank*_*yas 93
通过编写第一行,您将获得所有视图控制器的索引,并从第二行获取您将到达目的地.
NSArray *array = [self.navigationController viewControllers];
[self.navigationController popToViewController:[array objectAtIndex:2] animated:YES];
Run Code Online (Sandbox Code Playgroud)
Yun*_*hel 75
更安全的方法:
- (void)turnBackToAnOldViewController{
for (UIViewController *controller in self.navigationController.viewControllers) {
//Do not forget to import AnOldViewController.h
if ([controller isKindOfClass:[AnOldViewController class]]) {
[self.navigationController popToViewController:controller
animated:YES];
return;
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 15
顺畅的方式:
let dashboardVC = navigationController!.viewControllers.filter { $0 is YourViewController }.first!
navigationController!.popToViewController(dashboardVC, animated: true)
Run Code Online (Sandbox Code Playgroud)
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:1] animated:YES];
Run Code Online (Sandbox Code Playgroud)
小智 7
斯威夫特 4版本
if let viewController = navigationController?.viewControllers.first(where: {$0 is YourViewController}) {
navigationController?.popToViewController(viewController, animated: false)
}
Run Code Online (Sandbox Code Playgroud)
您可以.viewControllers.first根据需要指定另一个过滤器,例如假设您kind在导航控制器中有相同的视图控制器,那么您可以指定一个额外的检查,如下所示
if let viewController = navigationController?.viewControllers.first(where: {
if let current = $0 as? YourViewController {
return current.someProperty == "SOME VALUE"
}
return false } ) {
navigationController?.popToViewController(viewController, animated: false)
}
Run Code Online (Sandbox Code Playgroud)
通常从堆栈顶部执行此操作更为重要,因此:
- (void)popToLast:(Class)aClass
{
for (int i=self.navigationController.viewControllers.count-1; i>=0; i--)
{
UIViewController *vc = self.navigationController.viewControllers[i];
if ([vc isKindOfClass:aClass])
{
[self.navigationController popToViewController:vc animated:YES];
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
你打电话给那个
popToLast:[SomeViewController class];
Run Code Online (Sandbox Code Playgroud)
- (void) RetunToSpecificViewController{
for (UIViewController *controller in self.navigationController.viewControllers)
{
if ([controller isKindOfClass:[AnOldViewController class]])
{
//Do not forget to import AnOldViewController.h
[self.navigationController popToViewController:controller
animated:YES];
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44643 次 |
| 最近记录: |