2013-04-03 6 views
1

У меня есть UIPageViewController на моей раскадровке, и теперь мне интересно, как добавить к нему контроллер вида? Допустим, если у меня есть 5 контроллеров представления, как я могу добавить их от начала до конца в UIPageViewController? Обычно я хотел бы сделать это:Как добавить ViewController в UIPageViewController

 [self addChildViewController:firstViewController]; 
     [self addChildViewController:secondViewController]; 
     [self addChildViewController:thridViewController]; 
     [self addChildViewController:fourthViewController]; 
     [self addChildViewController:fifthViewController]; 

Но я не уверен, как добавить это на UIPageViewController в таком порядке ...

EDIT:

ChapterViewController *chapterViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ChapterView"]; 
NSArray *viewControllers = [NSArray arrayWithObject:chapterViewController]; 

[self setViewControllers:viewControllers 
         direction:UIPageViewControllerNavigationDirectionForward 
          animated:NO 
       completion:^(BOOL finished){ 
        NSLog(@"call back success");}]; 

ответ

3

UIPageViewController Безразлично» t позволяют легко добавлять новые контроллеры представлений по одному, по-видимому, потому, что Apple хочет, чтобы разработчики не добавлять страницы по одному очень легко (я мог видеть, что это запутывает пользовательский интерфейс для пользователей приложения).

Чтобы сделать то, что вы хотите сделать, вы должны добавить новый контроллер представления в массив (предположительно массив уже существующих контроллеров отображения, которые вы извлекаемых с помощью "viewControllers"), а затем вызвать "setViewControllers:direction:animated:completion:" с нового массива включая один (или несколько) новых контроллеров представлений, которые будут добавлены в Контроллер просмотра страницы.

+0

Пожалуйста, проверьте мой отредактированный ответ, я пробовал это, но он просто показывает мне черный экран. (Я поместил код в viewDidLoad из класса UIPageViewController) – Shinonuma

+0

Однако «перезвонить» успешно распечатывается out – Shinonuma

+1

Причина, по которой происходит, заключается в том, что ваш контроллер просмотра страницы путается о * what * для отображения. Когда вы вызывали этот код, он отображал какой-то другой контроллер представлений, но затем вы удаляете ** все контроллеры представлений ** и заменяете его только вашим контролером ChapterViewController, который, как я подозреваю, не то, что вы действительно хотели сделать. Вам нужно добавить свой ChapterViewController в конец всех остальных контроллеров представлений. –

Смежные вопросы