向右滑动以在不使用故事板的情况下关闭 ViewControlelr Swift

Swipe Right to Dismiss ViewControlelr without using Storyboard Swift

如何在不使用 Storyboard 的情况下关闭任何 View Controller?我必须使用 UINavigationController 来实现吗?如果不是那怎么办?

如果你想向右滑动不是关闭,但我认为你想要的是将 UIViewController 嵌入 UINavigationController

例如:

if let vc = UIStoryboard(name: "YourStoryboard", bundle: nil).instantiateViewController(withIdentifier: "YourViewController") as? YourViewController {
  let navigation = UINavigationController(rootViewController: vc)
  navigationController?.pushViewController(vc, animated: true)
}

关闭视图控制器的方法是在呈现视图控制器上调用关闭方法。如果您通过调用 self.present(_:animated:) 从 parent 展示了您的 child 控制器,那么您可以调用 self.dismiss(animated:)。如果您使用了 navigationController 并调用了 navigationController.push(_:animated:) 那么您需要告诉导航控制器使用 navigationController.popViewController(animated:) 关闭 方法名称可能不准确,但您应该能够使用自动完成功能将其计算出来。

如果有人仍然难以通过滑动(左、右、下、上)来关闭 我遇到了一只非常优雅体面的椰子panslip

使用非常简单

在viewDidLoad()中调用这个方法即可

对于viewController嵌入导航控制器

let viewControllerVC = self.navigationController

    viewControllerVC!.ps.enable(slipDirection: .leftToRight){
        
        //anything you want to do after dissming
        
    }

对于简单视图控制器

let viewControllerVC = self

    viewControllerVC!.ps.enable(slipDirection: .leftToRight){
        
        //anything you want to do after dissming
        
    }

对于嵌入在视图控制器中的 TableView

let viewControllerVC = self.YourTableview.parentContainerViewController()

    viewControllerVC!.ps.enable(slipDirection: .leftToRight){
        
        //anything you want to do after dissminn
        
    }