2014-02-21 4 views
0

В настоящее время я вхожу в тупик с приложением, которое я пытаюсь сделать.Настройка главного контроллера представления и отображение определенного текста и изображений в IOS Dev

Я создал контроллер просмотра страницы, который может прокручивать и показывать четыре разных изображения и метки из массива в одном контроллере. Это реализация коды:

_pageTitles = @[@"One", @"Two", @"Three", @"Four"]; 
_pageImages = @[@"1.png", @"2.png", @"3.png",@"4.png"]; 

// Create page view controller 
self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"]; 
self.pageViewController.dataSource = self; 

PageContentViewController *startingViewController = [self viewControllerAtIndex:0]; 
NSArray *viewControllers = @[startingViewController]; 
[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; 

// Change the size of page view controller 
self.pageViewController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - 30); 

[self addChildViewController:_pageViewController]; 
[self.view addSubview:_pageViewController.view]; 
[self.pageViewController didMoveToParentViewController:self]; 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 
NSUInteger index = ((PageContentViewController*) viewController).pageIndex; 

if ((index == 0) || (index == NSNotFound)) { 
    return nil; 
} 

index--; 
return [self viewControllerAtIndex:index]; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 
NSUInteger index = ((PageContentViewController*) viewController).pageIndex; 

if (index == NSNotFound) { 
    return nil; 
} 

index++; 
if (index == [self.pageTitles count]) { 
    return nil; 
} 
return [self viewControllerAtIndex:index]; 
} 

- (PageContentViewController *)viewControllerAtIndex:(NSUInteger)index 
{ 
if (([self.pageTitles count] == 0) || (index >= [self.pageTitles count])) { 
    return nil; 
} 

// Create a new view controller and pass suitable data. 
PageContentViewController *pageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageContentViewController"]; 
pageContentViewController.imageFile = self.pageImages[index]; 
pageContentViewController.titleText = self.pageTitles[index]; 
pageContentViewController.pageIndex = index; 

return pageContentViewController; 


} 

- (NSInteger)presentationCountForPageViewController: (UIPageViewController*)pageViewController 
{ 
    return [self.pageTitles count]; 
} 

- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController 
{ 
    return 0; 
} 

Я хотел бы иметь только три страницы появляется каждый раз, когда приложение запускается вместо всех четырех страниц без необходимости полностью удалить его из массива, но Heres загвоздка. Я хотел бы установить условие, в котором сначала отображается средняя страница, а только страница до И после выбора страницы выбора, при этом последняя страница будет скрыта.

например.

Если выбрана страница 3, страницы 2, 3, 4 можно увидеть на странице просмотра , если выбрана страница 2, страницы страницы 1, 2, 3 видны на странице просмотра.

Я пробовал поместить это в простой термин для понимания, но я просто не могу понять, как я это делаю. Я весь день пытался понять это, и мне не повезло!

Может ли кто-нибудь указать мне в правильном направлении?

ответ

0

Вам нужно будет создать переменную класса, которая является чем-то вроде currentlySelectedPageNumber, а затем отбросить всю вашу делегирование pageViewController этого значения. Если текущий выбран 2, вам не нужно ничего менять, кроме того, что индекс не превышает 2 (номер 3). Если в настоящий момент выбран 3, вам просто нужно, чтобы функции делегата вернули номер 2 как 1, номер 3 как 2, а номер 4 - 3.

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 
    NSUInteger index = ((PageContentViewController*) viewController).pageIndex; 

    NSInteger difference = index - currentlySelectedPageNumber; 
    if ((index == 0) || (index == NSNotFound) && difference < 0) { 
     return nil; 
    } 

    index--; 
    return [self viewControllerAtIndex:index]; 
} 

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 
    NSUInteger index = ((PageContentViewController*) viewController).pageIndex; 

    NSInteger difference = index - currentlySelectedPageNumber; 
    if (index == NSNotFound || difference > 0) { 
     return nil; 
    } 

    index++; 
    if (index == [self.pageTitles count]) { 
     return nil; 
    } 
    return [self viewControllerAtIndex:index]; 
} 

- (PageContentViewController *)viewControllerAtIndex:(NSUInteger)index 
{ 
    //For this one you need to modify index based on your currently selected value 
    index = currentlySelectedPageNumber - 1 + index; 
    if (([self.pageTitles count] == 0) || (index >= [self.pageTitles count]) || index < 0) { 
     return nil; 
    } 

    // Create a new view controller and pass suitable data. 
    PageContentViewController *pageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageContentViewController"]; 
    pageContentViewController.imageFile = self.pageImages[index]; 
    pageContentViewController.titleText = self.pageTitles[index]; 
    pageContentViewController.pageIndex = index; 

    return pageContentViewController; 


} 

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

  • Нет связанных вопросов^_^