Хорошо, я создал приложение слайдера для просмотра страниц. Все работает отлично, но теперь я хотел бы иметь возможность вставлять/выходить из моего UIPageViewController с помощью UIPinchGestureRecognizer.Swift - UIPinchGestureRecognizer в UIPageViewController
У меня есть все, что создано в коде, но я все еще получаю эту ОШИБКУ, когда я зажимаю.
Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '-[App.ViewController pinchDetected]: unrecognized selector sent
to instance 0x7faadc90c6f0'
Как я могу использовать функцию pinchDetected в UIPageViewController с помощью UIPinchGestureRecognizer?
Пожалуйста, позвольте мне теперь, если я делаю это неправильно. Новое в скор/ИОС
мой код
class ViewController: UIViewController, UIPageViewControllerDataSource {
var pageViewController: UIPageViewController!
private var allPages = [Page]()
var pages = NSMutableOrderedSet()
override func viewDidLoad() {
super.viewDidLoad()
###PinchRecognizer
var pinchRecognizer = UIPinchGestureRecognizer(target:self, action:"pinchDetected")
self.view.addGestureRecognizer(pinchRecognizer)
self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as! UIPageViewController
self.pageViewController.dataSource = self
var startVC = self.viewControllerAtIndex(0) as ContentViewController
var viewControllers = NSArray(object: startVC)
self.pageViewController.setViewControllers(viewControllers as [AnyObject], direction: .Forward, animated: true, completion: nil)
self.pageViewController.view.frame = CGRectMake(0, 30, self.view.frame.width, self.view.frame.size.height)
self.addChildViewController(self.pageViewController)
self.view.addSubview(self.pageViewController.view)
self.pageViewController.didMoveToParentViewController(self)
}
###PinchRecognizer Function
func pinchDetected(pinchRecognizer: UIPinchGestureRecognizer) {
var scale: CGFloat = pinchRecognizer.scale;
self.view.transform = CGAffineTransformScale(self.view.transform, scale, scale);
pinchRecognizer.scale = 1.0;
}
func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
var vc = viewController as! ContentViewController
var index = vc.pageIndex as Int
if (index == 0 || index == NSNotFound) {
return nil
}
index--
return self.viewControllerAtIndex(index)
}
func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
var vc = viewController as! ContentViewController
var index = vc.pageIndex as Int
if (index == NSNotFound) {
return nil
}
index++
if (index == self.pages.count) {
return nil
}
return self.viewControllerAtIndex(index)
}
func viewControllerAtIndex(index: Int) -> ContentViewController
{
if ((self.pages.count == 0) || (index >= self.pages.count)) {
return ContentViewController()
}
var vc: ContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("ContentViewController") as! ContentViewController
###Store image in imageFile
var image = (pages.objectAtIndex(index) as! Page).image
vc.imageFile = image
vc.pageIndex = index
return vc
}
func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int
{
return self.pages.count
}
func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int
{
return 0
}
}
sahara108 правильно и быстрее, чем я комментировал. Когда у вас есть параметр, добавьте «:» к имени действия. Это может быть причиной ошибки. – MacKentoch