2016-07-18 4 views
0

나는 오류가 NULL 포인터를 가지고 있다는 것을 알고 있지만 그 이유는 확실하지 않으며 그것이 내 코드에서 뭔가 잘못되었다고 가정합니다. 내 인덱스는 홈 페이지 인 중간보기 컨트롤러에서 시작하기 때문에 1부터 시작합니다. 스냅인과 비슷한보기 컨트롤러 사이를 스 와이프하기 위해 페이지보기 컨트롤러를 만들려고합니다. 다음 코드를 가지고 오류가이 라인에서 발생UIPageViewController 잘못된 액세스 오류

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 (코드 = 2, 어드레스 = 0x7fff58d57ff8)

여기
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 
} 

이보기 controlle 내 스토리 보드입니다 :

여기 내 viewControllerAtIndex 기능입니다 모든 모든 도움을 크게 감사

enter image description here

: RS 사이에 슬쩍!

+0

귀하의보기 컨트롤러가 색인 기능에 있고 색인이 0이 아닌 1에서 시작하는 이유는 무엇입니까? – WMios

+0

@WMios 방금 편집을 추가했습니다 – evanhaus

+0

실제 오류가있는 스택 추적을 포함 할 수도 있습니까? – WMios

답변

1

그것은 수

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 
} 

같은 요구를 찾습니다 또한

let selectedIndex = 1 

이어야

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

    return viewControllersArray[index] 
} 

let selectedIndex = 0 

1은 두 번째 페이지를 나타 내기 때문입니다.

+1

이것은 효과가 있습니다! 고맙습니다. – evanhaus