BAD_ACCESS в UIPageViewControllerIOS

Программируем под IOS
Ответить
Anonymous
 BAD_ACCESS в UIPageViewController

Сообщение Anonymous »

У меня есть работающий UIPageViewController, который содержит несколько UIViewControllers, встроенных в UINavigationController, и каждый UIViewController имеет предварительный просмотр массива изображений, который при открытии создать экземпляр нового UIPageViewController для отображения этих изображений
когда я пролистываю изображения, а затем возвращаюсь к первому, мое приложение вылетает с ошибкой "

Код: Выделить всё

EXC_BAD_ACCESS(code=EXC_I386_GPFLT)
» то же самое, когда я использую кнопку «Назад» UINavigationController
Почему это и как это исправить?
Мой PageViewController (отмеченная строка — последняя, ​​которую я получил в отладчике перед его сбоем):

Код: Выделить всё

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 -> PicturesMinionViewController

Подробнее здесь: https://stackoverflow.com/questions/396 ... controller
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»