繁体   English   中英

返回到以前的ViewController,不适用于Swift中的多个视图控制器

[英]Go back to previous ViewController not working for multiple view controllers in Swift

如何以编程方式返回到先前的视图控制器? 我找到了这个答案,但是有一个示例演示了如何在有导航堆栈的情况下返回:

self.dismiss(animated: true, completion: nil)

万一我的基于导航控制器的控制器队列还可以。 当我转到下一个视图控制器时,有多个viewControllers与navigationView Controller连接,并且向后移动都可以正常工作,但是从下至下,我向后移动并卡在一个循环中,这意味着我被卡在第二个和第三个视图控制器之间到第一个视图控制器。

不要使用解雇。 A to B使用navigationcontroller.pushviewcontroller ,从B to C使用presentviewcontroller 然后在C controller后退按钮上使用dismissViewcontroller ,在B controller后退按钮上使用popViewController

您只需在后退按钮中添加行

self.navigationController?.popViewController(animated: true)

在Swift 3中,在按钮操作中尝试以下代码

@IBAction func btnBackClick(_ sender: UIButton) {
       _ = navigationController?.popViewController(animated: true) 
    }

navigation stack (A-> B-> C)中

  1. 要向后移动1 controller (B <-C或A <-B) ,请使用

     self.navigationController?.popViewController(animated: true) 
  2. 要移至root view controller (A <-C) ,请使用

     self.navigationController?.popToRootViewController(animated: true) 

弹出PreviousViewcontroller

  self.navigationController?.popViewController(animated: true)

弹出根视图控制器

  self.navigationController?.popToRootViewController(animated: true)

弹出特定的ViewController

 let viewControllers: [UIViewController] = self.navigationController!.viewControllers ;
 for vc in viewControllers
  {
    if vc.isKind(of:YourViewController)
     {
      self.navigationController!.popToViewController(vc, animated: true)
   break;
    }
    }
  }

对于Swift 3.0,您可以使用:

如果要备份rootviewcontroller,请使用This

        _ = self.navigationController?.popToRootViewController(animated: true)

或者如果您想返回另一个添加在Stack上的视图控制器,则:

 for obj in (self.navigationController?.viewControllers)! {
        if obj is TargetVC {
        _ =    self.navigationController?.popToViewController(obj, animated: true)
            break
        }
    }

试试这个:-//用于移至上一个屏幕

self.navigationController?.popViewController(animated: true)

//要移至您的根视图控制器! 这将清除//导航堆栈。

 self.navigationController?.popToRootViewController(animated: true)

//要移至特定的视图控制器,例如:-TargetVC

for obj in (self.navigationController?.viewControllers)! {
        if obj is TargetVC {
 self.navigationController?.popToViewController(obj, animated: true)
            break
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM