簡體   English   中英

UIPageViewController錯誤的訪問錯誤

[英]UIPageViewController bad access error

我知道錯誤意味着我有一個NULL指針,但是我不確定為什么,並且我認為這一定是我在代碼中做錯了。 我的索引從1開始,因為我希望它從作為主頁的中間視圖控制器開始。 我正在嘗試使頁面視圖控制器在類似於snapchat的視圖控制器之間滑動。 我有以下代碼:

import UIKit

class PageViewController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource {

  var viewControllersArray = [UIViewController]()
  var pageIndex: Int?
  let selectedIndex = 1

  override func viewDidLoad() {
    super.viewDidLoad()

    self.view.backgroundColor = UIColor.clearColor()

    let vc1 = storyboard?.instantiateViewControllerWithIdentifier("ProfileView") as! ProfileViewController
    let vc2 = storyboard?.instantiateViewControllerWithIdentifier("HomeView") as! HomeViewController
    let vc3 = storyboard?.instantiateViewControllerWithIdentifier("MatchesView") as! MatchViewController

    viewControllersArray.append(vc1)
    viewControllersArray.append(vc2)
    viewControllersArray.append(vc3)

    self.dataSource = self

    let pageContentViewController = self.viewControllerAtIndex(selectedIndex)
    self.setViewControllers([pageContentViewController!], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil)  //Error here

  }

該行發生錯誤:

self.setViewControllers([pageContentViewController!], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil)  //Error here

錯誤如下:“線程1:EXC_BAD_ACCESS(code = 2,address = 0x7fff58d57ff8)

這是我的viewControllerAtIndex函數:

func viewControllerAtIndex(index : Int) -> UIViewController? {
   if((self.viewControllersArray.count == 0) || (index >= self.viewControllersArray.count)) {
     return nil
   }

   let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as! PageViewController
   pageContentViewController.pageIndex = index


   return pageContentViewController
}

這是我的情節提要,其中的視圖控制器可在以下內容之間滑動:

在此處輸入圖片說明

任何幫助都將不勝感激!

看起來像

func viewControllerAtIndex(index : Int) -> UIViewController? {
   if((self.viewControllersArray.count == 0) || (index >= self.viewControllersArray.count)) {
     return nil
   }

   let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as! PageViewController
   pageContentViewController.pageIndex = index


   return pageContentViewController
}

需要是:

func viewControllerAtIndex(index : Int) -> UIViewController? {
   if((self.viewControllersArray.count == 0) || (index >= self.viewControllersArray.count)) {
     return nil
   }

   return viewControllersArray[index]
}

另外

let selectedIndex = 1

應該

let selectedIndex = 0

因為1將指向第二頁。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM