Pracuję z UIPageViewController, aby utworzyć wycieczkę produktu dla mojej aplikacji.Funkcje delegatów PageViewController wywoływane dwukrotnie
Śledziłem ten link http://www.appcoda.com/uipageviewcontroller-tutorial-intro/
robie jest prostym zadaniem zmieniając kolor backgound mojego „root VC” na bezstykowa, na podstawie wartości indeksu dostaję, ale jako funkcje delegata nazywane są dwa razy moja wartość indeksu nie jest poprawna i dlatego nie jestem w stanie uzyskać to prawo, poniżej jest mój kod
#import "APPViewController.h"
#import "APPChildViewController.h"
@interface APPViewController()
@end
@implementation APPViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
self.pageController.dataSource = self;
[[self.pageController view] setFrame:CGRectMake(0, 0, 320, 500)];
APPChildViewController *initialViewController = [self viewControllerAtIndex:0];
NSArray *viewControllers = [NSArray arrayWithObject:initialViewController];
[self.pageController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
[self addChildViewController:self.pageController];
[[self view] addSubview:[self.pageController view]];
[self.pageController didMoveToParentViewController:self];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (APPChildViewController *)viewControllerAtIndex:(NSUInteger)index {
APPChildViewController *childViewController = [[APPChildViewController alloc] initWithNibName:@"APPChildViewController" bundle:nil];
childViewController.index = index;
childViewController.view.backgroundColor = [UIColor clearColor];
if(index == 0)
{
self.view.backgroundColor = [UIColor redColor];
}
if(index == 1)
{
self.view.backgroundColor = [UIColor blueColor];
}
if(index == 2)
{
self.view.backgroundColor = [UIColor greenColor];
}
return childViewController;
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
NSUInteger index = [(APPChildViewController *)viewController index];
if (index == 0) {
return nil;
}
// Decrease the index by 1 to return
index--;
return [self viewControllerAtIndex:index];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSUInteger index = [(APPChildViewController *)viewController index];
index++;
if (index == 3) {
return nil;
}
return [self viewControllerAtIndex:index];
}
- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController {
// The number of items reflected in the page indicator.
return 3;
}
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController {
// The selected item reflected in the page indicator.
return 0;
}
Proszę mi pomóc, ja nie dostaję gdzie wezwę niewłaściwy
Pozdrowienia Ranjit
co dokładnie chcesz kontrolę ze strony UIViews lub uiviewcontrollers –
@ VivekSehrawat funkcje delegata UIPageViewController pracować tylko z VC. Więc muszę do nas VC – Ranjit
Czy chcesz zmienić kolor tła APPChildViewController lub APPViewController? –