0

Я потратил часы, пытаясь отладить это, используя инструменты и StackOverFlow, но я не нашел решения. Мой UIPageViewController продолжает рушиться, и я действительно думаю, что это потому, что процессор достигает 100%, а память может достигать высоких уровней. Тем не менее, я не мог найти никаких переменных или каких-либо сильных ссылок, которые предотвратили бы освобождение предыдущих не отображаемых контроллеров View. Я думаю, что это проблема памяти в PageViewController, но я не уверен на 100%. Я довольно новичок в Swift, и мне действительно трудно с этим дебютировать, поэтому любая помощь будет очень признательна. Вот код для моего UIPageViewControllerDataSource.My UIPageViewController продолжает сбой

import UIKit 

class HarishIntroduction: UIViewController, UIPageViewControllerDataSource { 

var pageViewController: UIPageViewController! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view. 
    self.pageViewController = harishStoryboard.instantiateViewControllerWithIdentifier("HarishPageViewController") as! UIPageViewController 
    self.pageViewController.dataSource = self 
    weak var initialViewController = harishStoryboard.instantiateViewControllerWithIdentifier("HarishIntroduction") as? HarishIntroduction 
    let viewController = NSArray(object: initialViewController!) 
    dispatch_async(dispatch_get_main_queue(), { 
     self.pageViewController.setViewControllers(viewController as? [UIViewController], direction: .Forward, animated: false, completion: nil) 
    }) 
    self.pageViewController.view.frame = self.view.bounds 
    self.addChildViewController(pageViewController) 
    self.view.addSubview(self.pageViewController.view) 
    self.pageViewController.didMoveToParentViewController(self) 
} 

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { 
    if viewController.isKindOfClass(HarishIntroduction) { 
     return nil 
    } 
    if viewController.isKindOfClass(HarishPlaces) { 
     let correctViewController = harishStoryboard.instantiateViewControllerWithIdentifier("HarishIntroduction") as? HarishIntroduction 
     return correctViewController 
    } 
    if viewController.isKindOfClass(WyomingSeminary) { 
     let correctViewController = harishStoryboard.instantiateViewControllerWithIdentifier("HarishPlaces") as? HarishPlaces 
     return correctViewController 
    } 
    if viewController.isKindOfClass(AppleTree) { 
     let correctViewController = harishStoryboard.instantiateViewControllerWithIdentifier("WyomingSeminary") as? WyomingSeminary 
     return correctViewController 
    } 
    if viewController.isKindOfClass(KearneyHighSchool) { 
     let correctViewController = harishStoryboard.instantiateViewControllerWithIdentifier("AppleTree") as? AppleTree 
     return correctViewController 
    } 
    if viewController.isKindOfClass(MosconeCenter) { 
     let correctViewController = harishStoryboard.instantiateViewControllerWithIdentifier("KearneyHighSchool") as? KearneyHighSchool 
     return correctViewController 
    } 
    else { 
     return nil 
    } 
} 

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { 
    if viewController.isKindOfClass(HarishIntroduction) { 
     let correctViewController = harishStoryboard.instantiateViewControllerWithIdentifier("HarishPlaces") as? HarishPlaces 
     return correctViewController 
    } 
    if viewController.isKindOfClass(HarishPlaces) { 
     let correctViewController = harishStoryboard.instantiateViewControllerWithIdentifier("WyomingSeminary") as? WyomingSeminary 
     return correctViewController 
    } 
    if viewController.isKindOfClass(WyomingSeminary) { 
     let correctViewController = harishStoryboard.instantiateViewControllerWithIdentifier("AppleTree") as? AppleTree 
     return correctViewController 
    } 
    if viewController.isKindOfClass(AppleTree) { 
     let correctViewController = harishStoryboard.instantiateViewControllerWithIdentifier("KearneyHighSchool") as? KearneyHighSchool 
     return correctViewController 
    } 
    if viewController.isKindOfClass(KearneyHighSchool) { 
     let correctViewController = harishStoryboard.instantiateViewControllerWithIdentifier("MosconeCenter") as? MosconeCenter 
     return correctViewController 
    } 
    if viewController.isKindOfClass(MosconeCenter) { 
     return nil 
    } 
    else { 
     return nil 
    } 
} 

ОБНОВЛЕНИЕ: Исходный контроллер представления является "HarishIntroduction."

+0

В какой момент это грохот ??? Вы пытались добавить символические точки останова? – satheeshwaran

+0

Что такое сообщение об аварии? – Paulw11

+0

@ Paulw11 Я вообще не получаю сообщение об аварии. На самом деле, странно, что вся система выходит из строя и перезагружается, и все, что я получаю в консоли, - это сообщение, в котором говорится, что соединение XPC было прервано и в основном оно потеряло соединение с симулятором. – Harish

ответ

1

Что вы делаете, это неверный путь, вы пытаетесь создать экземпляр UIPageViewController с контроллером исходного представления в качестве контроллера представления, который, в свою очередь, является родителем UIPageViewController.

Я делаю это на отдельном классе, и все работает хорошо, я создал только два контроллера вида, хотя в иерархии диспетчера страниц. Вы можете добавить больше, никаких проблем с этим.

И нет необходимости делать dispatch_async в main_queue на viewDidLoad, потому что вы уже находитесь в main_queue с viewDidLoad, заберите этот код.

Приведенный выше код хорошо подходит для меня, при необходимости Я могу загрузить проект для вас.

+0

Большое спасибо за вашу помощь! Я попробовал код выше, и приложение не потерпит крах. Тем не менее, всякий раз, когда я менял, UIPageViewController не реагировал, и он не загружал ни одно из других представлений. Я просмотрел код для любых возможных орфографических ошибок, но я не нашел их. У тебя есть идеи? – Harish

+0

Каков ваш первоначальный контроллер? Пожалуйста, обновите текущий код в своем вопросе. – satheeshwaran

+0

Хорошо, я сделаю это одну минуту. – Harish