2015-05-25 77 views
0

我想實現UIPageViewController。我以前做過這個,但是使用相同的UIViewController並在分頁時更改圖像等。我現在要在不同的UIViewController之間翻頁。我試圖根據包含UIViewControllers的故事板ID的數組中的內容來編寫創建UIViewController的方法。例如,我有此數組:UIPageViewController和不同的視圖控制器

self.controllerIdentifiers=[NSArray arrayWithObjects:@"ViewControllerTypeA",@"ViewControllerTypeB", nil]; 

現在想實現:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 
    if (self.controllerIndex==0) return nil; 

    self.controllerIndex--; 
    NSString *id = self.controllerIdentifiers[self.controllerIndex]; 

    //If I knew the controller type I would do something like this.. 

    ViewControllerTypeA *typeA = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewControllerTypeA"]; 

    return typeA; 
} 

的問題是我不知道如何告訴它的代碼是什麼類型的UIViewController。我是否需要爲每個可能的索引提出一些邏輯,並以這種方式啓動一個UIViewController

+0

可能重複的[如何實現UIPageViewController,利用多個ViewControllers](http://stackoverflow.com/questions/21641373/how-to-implement-uipageviewcontroller-that-utilizes-multiple-viewcontrollers) –

回答

1

我使用this template來實現此目的。 它來自一個(可能重複)與兩個有趣的答案,你可以找到there

編輯:
TL; DR的想法是使用故事板標識符爲不同的視圖控制器在需要時實例化它們,使用PageViewControllerDataSource協議方法。

+0

嘿,剛剛拿走看看這個github的例子。看來這裏的所有UIViewController都是UIViewController類。我的UIViewControllers是所有不同的類型,即使用不同的類文件,所以我不知道如何啓動它,如果我不知道它的類型。 – Kex

+0

沒關係。由於它是從故事板實例化的,因此iOS將爲您完成這項工作。根viewController不需要知道不同的頁面類。 –

+0

我會用UIViewController * controller = [self.storyboard instantiateViewControllerWithIdentifier:@「SomeID」]來啓動它嗎?然後? – Kex

相關問題