UIPageViewController 上的 BAD_ACCESS

问题描述 投票:0回答:2

我有一个工作中的

UIPageViewController
,其中嵌入了多个
UIViewControllers
,每个
UINavigationController
都有一个图像数组的预览,当打开时,会实例化一个新的
UIViewController
来显示这些图像
当我滑动图像,然后滑动回第一个图像时,我的应用程序崩溃并显示“

UIPageViewController

”,当我使用

EXC_BAD_ACCESS(code=EXC_I386_GPFLT)
 的后退按钮时,同样的情况
这是为什么?我该如何解决这个问题?

我的 PageViewController(标记的行是我在调试器崩溃之前进入的最后一行):

UINavigationController

所以结构看起来像这样

class DetailPageMasterViewController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource { var presentationPageIndex: Int = 0 var itemsArray = [Aktion]() var pageViewController: UIPageViewController! @IBOutlet weak var btnEditOutlet: UIBarButtonItem! @IBAction func btnEditAction(sender: AnyObject) { } override func viewDidLoad() { super.viewDidLoad() self.pageViewController = UIPageViewController.init(transitionStyle: .Scroll, navigationOrientation: .Horizontal, options: nil) self.pageViewController.delegate = self self.pageViewController.dataSource = self self.presentationPageIndex = 0 let firstVC = self.viewControllerAtIndex(presentationPageIndex) let viewControllers = [firstVC] self.pageViewController.setViewControllers(viewControllers, direction: .Forward, animated: false, completion: nil) self.addChildViewController(self.pageViewController) self.view.addSubview(self.pageViewController.view) self.pageViewController.didMoveToParentViewController(self) self.setupPageControl() } func pageViewController(pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) { if completed { let minionVC = self.pageViewController.viewControllers?.last as! DetailMinionViewController presentationPageIndex = minionVC.pageIndex } } func viewControllerAtIndex(index: Int) -> DetailMinionViewController { let contentVC = self.storyboard?.instantiateViewControllerWithIdentifier("MinionPageViewController") as! DetailMinionViewController contentVC.aktion = itemsArray[index] contentVC.pageIndex = index return contentVC } func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { if let viewController = viewController as? DetailMinionViewController { var index = viewController.pageIndex if index == 0 || index == NSNotFound { return nil //MARKED LINE } index -= 1 return self.viewControllerAtIndex(index) } return nil } func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { if let viewController = viewController as? DetailMinionViewController { var index = viewController.pageIndex if index == NSNotFound { return nil } index += 1 if index == NSNotFound || index >= itemsArray.count { return nil } return self.viewControllerAtIndex(index) } return nil } func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int { return itemsArray.count } func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int { return presentationPageIndex } func setupPageControl() { UIPageControl.appearance().backgroundColor = UIColor.clearColor() UIPageControl.appearance().pageIndicatorTintColor = UIColor.whiteColor() UIPageControl.appearance().currentPageIndicatorTintColor = UIColor.redColor() } }
->

UINavigationController
->
DetailPageMasterViewController
->
DetailMinionViewController
->
PicturesPageMasterViewController
    

ios swift uipageviewcontroller
2个回答
0
投票

长话短说:

PicturesMinionViewController
中的

gestureRecognizer
尝试访问已经取消初始化的
PicturesMinionViewController
,我的
ImageView
工作正常
    


-1
投票

© www.soinside.com 2019 - 2024. All rights reserved.