UIWebView внутри UIPageViewController вылетает приложение - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть приложение, которое нуждается в исправлении, описанном ниже.Процесс идет следующим образом, пользователь запускает приложение, новостные статьи отображаются на uitableview каждая ячейка имеет одну статью детали.Когда пользователь нажимает на любую ячейку, мы устанавливаем все статьи на uipageviewcontroller, используя pageViewController.setViewControllers([newsDetails!], direction: UIPageViewControllerNavigationDirection.forward, animated: false, completion: nil)

Если статьи отображаются только в текстовом представлении, перемещение контроллера влево и вправо работает отлично.Но если есть две последовательные статьи веб-просмотра, проведите пальцем вправо (от статьи веб-просмотра перейти к следующей статье веб-просмотра), а затем влево (назад к статье веб-просмотра) приложение вылетает с этим журналом сбоев .

Просто чтобы поэкспериментировать, я поместил свои данные в textview вместо uiwebview, и он все еще падал с тем же журналом сбоев, в этой статье используется тег iframe.Код здесь:

  func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
        //----------------------------------------------------------------------
        // Returning the article's detail view controller for the previous index
        print("VIEW CONTROLLER AFTER")
        return articleDetailViewController(for: detailPageIndex()-1,fromDetail:false)
    }

func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
        //------------------------------------------------------------------
        // Returning the article's detail view controller for the next index
        print("VIEW CONTROLLER BEFORE")

        return articleDetailViewController(for: detailPageIndex()+1,fromDetail:false)
    }

// We create a new instance of detail View Controller when ever a new VC is requested 

func articleDetailViewController(for index: Int,fromDetail :Bool) -> MISNewsDetailViewController? {
        let allNews:Bool
         if(UserDefaults.standard.object(forKey: "IsAllNewsSelected") == nil || (UserDefaults.standard.object(forKey: "IsAllNewsSelected") as! String) == "YES"){
            allNews = true
         }else{
            allNews = false
        }
        //--------------------------------------------
        // If the index is out of bound, nil is return
        if(allNews){
            if (index == -1 || index >= (allArticles.count)) {
                return nil
            }
        }else{
            if (index == -1 || index >= (myArticles.count)) {
                return nil
            }
        }

        //---------------------------------------------------
        // Getting the article object for the requested index
        let article: MISArticle?
        let detailViewController = storyboard?.instantiateViewController(withIdentifier: "MISNewsDetailViewController") as? MISNewsDetailViewController

        let myAppDelegate = (UIApplication.shared.delegate as! AppDelegate)
        if(myAppDelegate.isLaunchedFromWidget){
            article =  self.getTheWidgetSelectedArticleBaasedOnGlobalId();
        }else{
            if(allNews){
                article = allArticles[index]
                 detailViewController?.isAllNewsPost = true
            }else{
                article = myArticles[index]
                 detailViewController?.isAllNewsPost = false
            }
        }

        detailViewController?.mPost = article
        detailViewController?.isRefreshPost = fromDetail
        return detailViewController
    }
...