在我的项目中,我使用UIPageViewController来在5个子UIViewController之间切换。在某些子视图控制器中,我需要禁用UIPageViewController的滑动手势,以便当用户滑动时不会切换到其他视图。那么我该如何从子视图控制器中禁用滑动呢?
感谢您的帮助...谢谢
感谢您的帮助...谢谢
override func viewDidLoad(){
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(yourpageviewcontroller.enableSwipe(_:)), name:"enableSwipe", object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(yourpageviewcontroller.disableSwipe(_:)), name:"disableSwipe", object: nil)
}
func disableSwipe(notification: NSNotification){
self.dataSource = nil
}
func enableSwipe(notification: NSNotification){
self.dataSource = self
}
在您的子视图控制器中,您可以按照以下步骤发布通知。
NSNotificationCenter.defaultCenter().postNotificationName("enableSwipe", object: nil)
或者
NSNotificationCenter.defaultCenter().postNotificationName("disableSwipe", object: nil)
您可以使用此扩展:
extension UIPageViewController {
var isPagingEnabled: Bool {
get {
var isEnabled: Bool = true
for view in view.subviews {
if let subView = view as? UIScrollView {
isEnabled = subView.isScrollEnabled
}
}
return isEnabled
}
set {
for view in view.subviews {
if let subView = view as? UIScrollView {
subView.isScrollEnabled = newValue
}
}
}
}
}
pageCtrl.isPagingEnabled = false