修改SwipeViewController Pod在ContainerView中运行
问题描述:
所以即时通讯使用这个窗口'SwipeViewController'(https://github.com/fortmarek/SwipeViewController),真的给了我想要的效果,但问题是它只能作为主导航控制器运行,并且我希望它能够工作在一个容器视图,因为我想用它在配置文件菜单中的这个社交应用程序像Twitter的“我的推文”,“喜欢”,“转发”...修改SwipeViewController Pod在ContainerView中运行
因此,例如我需要这个...
所以刚才的解释,让你需要这行代码添加到的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()
用户选择一个新的选项来查看。
我希望这会有所帮助。