在 iOS 上弹出到特定控制器 |目标-c

Posted

技术标签:

【中文标题】在 iOS 上弹出到特定控制器 |目标-c【英文标题】:Pop to particular controller on iOS | Objective-c 【发布时间】:2016-06-09 16:42:27 【问题描述】:

我有以下代码来推送新的 ViewController。

- (IBAction)btnEditPressed:(id)sender 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:@"contactListViewController"];
    [self parentShowViewController:controller sender:sender];


- (void)parentShowViewController:(UIViewController *)controller sender:(id)sender 
    if ([self isios7]) 
        // En iOS7 no existe el método showViewController
        [self.navigationController pushViewController:controller animated:YES];
     else 
        //[self.navigationController pushViewController:controller animated:YES];
        [super showViewController:controller sender:sender];
    

现在我有以下场景:我有 3 个 ViewController,分别称为 A、B、C。

A->B->C 如果按返回键我想从C返回到A

【问题讨论】:

【参考方案1】:

试试这样的

如果你想在控制器 C 上从控制器 C 转到控制器 A,创建自定义后退按钮并设置它的操作,并输入以下代码。

 [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES];

这只有在你知道控制器 A 是你在 Navigation 中的第一个控制器时才有效。

如果你不知道viewController的顺序,试试这个

    for (UIViewController *vc in self.navigationController.viewControllers) 
        if ([vc isKindOfClass:[ViewControllerA class]]) 
            [self.navigationController popToViewController:VC animated:Yes];
        
    

要添加自定义按钮,请转到此link

希望这会对你有所帮助。

【讨论】:

如果您不知道如何在导航栏中添加自定义按钮,请告诉我。

以上是关于在 iOS 上弹出到特定控制器 |目标-c的主要内容,如果未能解决你的问题,请参考以下文章

我应该如何弹出到特定的视图控制器?

弹出到导航堆栈中的特定视图控制器

如何从 NSobject 类 iOS 在任何视图控制器类上弹出 MFMessageComposeViewController 对象

iOS10 Facebook 登录弹出到根视图控制器

如何在 iOS 13 中查看和弹出视图控制器

如何覆盖 Apple Watch 后退按钮以弹出到根控制器