【问题标题】:iOS back button behaviour : double backiOS后退按钮行为:双退
【发布时间】:2016-05-23 17:18:33
【问题描述】:

我有 3 个视图控制器: A ->segue1-> B ->segue2-> C

当用户在“C”并按下“返回”按钮时,我想直接转到 A 而不是 B。 我怎样才能用 swift 做到这一点?

谢谢

【问题讨论】:

    标签: ios swift uinavigationcontroller storyboard navigationcontroller


    【解决方案1】:

    如果您使用导航控制器,您可以使用 popToRootViewControllerAnimated(_:)

    如果您以模态方式呈现两个控制器,则可以在 A 控制器中调用 dismissViewControllerAnimated(_:completion:)

    创建您自己的后退按钮:

    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonSystemItemDone target:self action:@selector(tapped:)];
    

    然后弹出到根控制器:

    -(void)tapped:(UIButton*)sender {
       [self.navigationController popToRootViewControllerAnimated(NO)];
    }
    

    【讨论】:

    • 覆盖 func willMoveToParentViewController(parent: UIViewController?){ self.dismissViewControllerAnimated(true, completion: {}); } 显示 C 中的 B 但不显示 A。
    • 你不需要 willMoveToParentViewController。这用于在另一个控制器中添加子控制器。如果您在 A 控制器对象中使用 push segue(navigation contorller) 或 dismissViewController,只需调用 popToRootViewController。
    • 我需要覆盖 C 屏幕中的后退按钮。我想要 C->A 而不是 C->B
    • 在您的后退按钮操作中使用 popToRootViewControllerAnimated。
    • 我的情节提要中没有后退按钮。后退按钮由导航控制器自动创建。 popToRootViewControllerAnimated 显示黑屏 :(
    猜你喜欢
    • 2012-07-21
    • 1970-01-01
    • 2018-06-10
    • 1970-01-01
    • 2023-04-05
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多