2016-07-18 10 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)

ここ

は私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 
} 

はビューcontrolleと私のストーリーボードです間をスワイプするRS:

enter image description here

は、任意およびすべてのヘルプは大歓迎です!

+0

あなたのView ControllerはIndex関数のどこにありますか?なぜインデックスが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 
} 

ニーズのようになります。

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は2番目のページを参照するためです。

+1

これは機能しました!ありがとうございました。 – evanhaus

関連する問題