Страницы

Поиск по вопросам

понедельник, 29 октября 2018 г.

Переворот страницы по нажатии на кнопку

Использую этот код чтобы переворачивать страницу. всего 15 страниц
-(IBAction) next:(id)sender {
NSUInteger page1 = 1; NSUInteger page2 = 4;
DataViewController *firstViewController = [self.modelController viewControllerAtIndex:page1 storyboard:self.storyboard]; DataViewController *secondViewController = [self.modelController viewControllerAtIndex:page2 storyboard:self.storyboard];
NSArray *viewControllers = nil;
viewControllers = [NSArray arrayWithObjects:firstViewController, secondViewController, nil];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];
}
Проблема в том что я могу выбрать только 2 страницы ( из 15 могу переворачивать 1 и 4)
NSUInteger page1 = 1;
NSUInteger page2 = 4;
Как мне переворачивать все страницы от 1 - 15?
UPD
Ваш код работает. Но когда страницы заканчиваются приложение вылетает. Я использую этот код в RootViewController т.к. кнопку с действием могу создать только в нем, а массив с данными находится в ModelController где я не могу создать кнопку с действием. Как мне остановить перелистывание, когда страницы заканчиваются?
- (void)nextPage:(id)sender {
DataViewController *ViewController1 = self.pageViewController.viewControllers[0]; DataViewController *ViewController2 = self.pageViewController.viewControllers[1];
NSUInteger ViewControllerIndex1 = [self.modelController indexOfViewController:ViewController1] + 2; NSUInteger ViewControllerIndex2 = [self.modelController indexOfViewController:ViewController2] + 2;
DataViewController *firstViewController1 = [self.modelController viewControllerAtIndex:ViewControllerIndex1 storyboard:self.storyboard]; DataViewController *secondViewController1 = [self.modelController viewControllerAtIndex:ViewControllerIndex1 storyboard:self.storyboard];
NSArray *viewControllers = nil;
viewControllers = [NSArray arrayWithObjects:firstViewController1, secondViewController1, nil];
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];
}


Ответ

В методе next необходимо реализовать логику перелистывания для двух страниц. Т.е есть массив элементов, определяющих количество страниц в ModelController его можно вынести в хедер класса для видимости. И в RootViewController можно им пользоваться. А в классе RootViewController написать условие, чтобы не выходить за пределы массива, когда переписываются страницы. Для автоматического перелистывания нужно создать таймер в классе RootViewController, например в методе viewDidLoad
NSTimer *timer = [NSTimer timerWithTimeInterval:5 target:self selector:@selector(nextPage:) userInfo:nil repeats:YES]; [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

Комментариев нет:

Отправить комментарий