2015-02-06 107 views
1

在主視圖控制器中,我有一個簡單的按鈕,可以激活一個pageViewController。這pageViewController包含兩個視圖控制器。Swift pageViewController按鈕激活

我想激活它,但它不起作用。

文件pageviewcontroller中的代碼是:

import UIKit 

class PageViewController: UIPageViewController, UIPageViewControllerDelegate, UIPageViewControllerDataSource { 

    var myViewControllers : [UIViewController] = [] 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 

     self.delegate = self 
     self.dataSource = self 

     let p1 = storyboard?.instantiateViewControllerWithIdentifier("a") as aViewController 
     let p2 = storyboard?.instantiateViewControllerWithIdentifier("b") as bViewController 

     myViewControllers = [p1,p2] 


     for var index = 0; index < myViewControllers.count; ++index { 
      NSLog("\(myViewControllers[index])") 
     } 

     let startingViewController = self.viewControllerAtIndex(0) 
     let viewControllers: NSArray = [startingViewController] 

     self.setViewControllers(viewControllers, direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: {(done: Bool) in 
     }) 

     NSLog("loaded!"); 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    //Private Function 
    func viewControllerAtIndex (index: NSInteger) -> UIViewController{ 
     return myViewControllers[index] 
    } 

    //Delegates and Datasource 
    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { 

     NSLog("Entered to BeforeViewController") 

     var index = find(myViewControllers, viewController)! 
     NSLog("\(index)") 
     if (index == 0) || (index == NSNotFound) { 
      return nil 
     } 
     index-- 
     if index == myViewControllers.count { 
      return nil 
     } 
     NSLog("\(index)") 
     return self.viewControllerAtIndex(index) 
    } 

    func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { 

     NSLog("Entered to BeforeViewController") 

     var index = find(myViewControllers, viewController)! 
     NSLog("\(index)") 
     if index == NSNotFound { 
      return nil 
     } 
     index++ 
     if index == myViewControllers.count { 
      return nil 
     } 
     NSLog("\(index)") 
     return self.viewControllerAtIndex(index) 

    } 

    func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int { 
     return myViewControllers.count 
    } 

    func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int { 
     return 0 
    } 
} 

在包括在pageviewcontroller視圖控制器的代碼是:

import UIKit 

class aViewController: UIViewController { 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

} 

當我按下按鈕出現這樣的錯誤:

2015-02-05 20:37:21.111 Tutorial-JSON-Alamofire[616:165935] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Storyboard (<UIStoryboard: 0x1452de40>) doesn't contain a view controller with identifier 'a'' 
*** First throw call stack: 
(0x21a4a49f 0x2f204c8b 0x2545ea09 0x107130 0x1085e4 0x24f0b52f 0x24f0b29d 0x255645d5 0x251d4ead 0x251ece21 0x251eedb7 0x24feb2ef 0x251f1815 0x25304321 0x24f3c21b 0x24f3c1c1 0x24f26e33 0x24f3bc2d 0x24f3b907 0x24f351d1 0x24f0b97d 0x2517f2e9 0x24f0a3d9 0x21a10d57 0x21a10167 0x21a0e7cd 0x2195c3c1 0x2195c1d3 0x28d5a0a9 0x24f6a7b1 0x10dd60 0x10dd9c 0x2f784aaf) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 

回答

1

從給出的例外:

用於檢索UIViewController引用的標識符不屬於StoryBoard中的任何標識符。您需要將故事板ID更改爲「a」。

更新

  • 選擇從情節串連圖板的視圖 - 控制。
  • 從Utilities(右上角)中選擇Identity inspector(左起第三個)。
  • 在那裏輸入標識符。

enter image description here

+0

我怎樣才能從故事板做到這一點? – RenzoG 2015-02-07 18:32:39

+0

@RenzoG看看這個。 – 2015-02-07 19:18:40