修改SwipeViewController Pod在ContainerView中运行

问题描述:

所以即时通讯使用这个窗口'SwipeViewController'(https://github.com/fortmarek/SwipeViewController),真的给了我想要的效果,但问题是它只能作为主导航控制器运行,并且我希望它能够工作在一个容器视图,因为我想用它在配置文件菜单中的这个社交应用程序像Twitter的“我的推文”,“喜欢”,“转发”...修改SwipeViewController Pod在ContainerView中运行

因此,例如我需要这个...

https://camo.githubusercontent.com/f4eb2a8ba0a11e672d02a1ef600e62b5272a7843/687474703a2f2f696d6775722e636f6d2f5344496b6634622e676966

在这里工作在: Img 1 Img 2

所以刚才的解释,让你需要这行代码添加到的appDelegate荚工作

let pageController = UIPageViewController(transitionStyle: .Scroll, navigationOrientation: .Horizontal, options: nil) 
let navigationController = YourViewControllerName(rootViewController: pageController) 
self.window?.rootViewController = navigationController 
self.window?.makeKeyAndVisible() 

至极创建具有SwipeController一个新的窗口,我需要一种方法来使它在View控制器中工作。

我做了类似的事情,昨晚在这里使用教程:

https://cocoacasts.com/managing-view-controllers-with-container-view-controllers/

我的相关代码如下。我从容器视图创建了一个IBOutlet到我的ViewController,然后下面的代码将相应的视图控制器添加到容器视图,具体取决于名为buttonDefault的我的Bool的设置。确保将子视图添加到容器视图,而不是视图控制器的主视图。

@IBOutlet weak var containerView: UIView! 

// MARK: Container View 
// https://cocoacasts.com/managing-view-controllers-with-container-view-controllers/ 
lazy var remoteViewController: RemoteViewController = { 
    // Load Storyboard 
    let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil) 

    // Instantiate View Controller 
    var viewController = storyboard.instantiateViewController(withIdentifier: "RemoteViewController") as! RemoteViewController 

    // Add View Controller as Child View Controller 
    self.add(asChildViewController: viewController) 

    return viewController 
}() 

lazy var gestureRemoteViewController: GestureRemoteViewController = { 
    // Load Storyboard 
    let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil) 

    // Instantiate View Controller 
    var viewController = storyboard.instantiateViewController(withIdentifier: "GestureRemoteViewController") as! GestureRemoteViewController 

    // Add View Controller as Child View Controller 
    self.add(asChildViewController: viewController) 

    return viewController 
}() 

func add(asChildViewController viewController: UIViewController) { 
    // Add Child View Controller 
    addChildViewController(viewController) 

    // Add Child View as Subview 
    containerView.addSubview(viewController.view) 

    // Configure Child View 
    viewController.view.frame = containerView.bounds 
    viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight] 

    // Notify Child View Controller 
    viewController.didMove(toParentViewController: self) 
} 

func remove(asChildViewController viewController: UIViewController) { 
    // Notify Child View Controller 
    viewController.willMove(toParentViewController: nil) 

    // Remove Child View From Superview 
    viewController.view.removeFromSuperview() 

    // Notify Child View Controller 
    viewController.removeFromParentViewController() 
} 

func updateView() { 
    let settings = Settings() 

    if settings.buttonDefault { 
     remove(asChildViewController: gestureRemoteViewController) 
     add(asChildViewController: remoteViewController) 
    } else { 
     remove(asChildViewController: remoteViewController) 
     add(asChildViewController: gestureRemoteViewController) 
    } 
} 

一旦你添加这只是叫你viewDidLoad任何时间updateView()用户选择一个新的选项来查看。

我希望这会有所帮助。