2016-08-16 5 views
0

У меня есть UIPageViewController в контейнере, который должен показывать, как минимум, три страницы; максимум, шесть. Количество страниц будет определяться пользователем до появления PageViewController.Как создать переменное число ViewControllers внутри PageViewController?

Для большей картины я пытаюсь создать приложение для управления проектами, которое позволяет создать гибкую систему создания и управления билетами. Предполагается, что PageVC перелистает 3-6 столбцов в зависимости от того, сколько пользователей хочет выполнить этот проект. Например, если это простой проект, у них может быть только три столбца с именами: «Неназначенные», «Назначенные» и «Завершить». Например, более сложные проекты могут иметь 5 столбцов, названных «Backlog», «Issues», «In Progress», «Review», «Done». Каждый из этих столбцов будет иметь свой собственный ViewController в пределах PageVC.

Это то, что моя модель данных выглядит, чтобы получить представление о том, где я получаю количество столбцов из (атрибута проекта под названием: «projectColumnCount»): -

enter image description here

ответ

0

вы можете использовать после концепции ObjectiveC в Swift.

Рекомендуется создать контроллер представления контента на начальном этапе, а затем использовать методы диспетчера представлений Pagedecontroller для создать другие контроллеры.

вы можете проверить следующие методы делегата Pageviewcontroller для тех же

делегированных Методов Pageviewcontroller, как показано ниже.

- (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 == [arrPage count]) { 

     return nil; 

    } 

    return [self viewControllerAtIndex:index]; 
} 

вы можете использовать ниже метод, чтобы создать экземпляр ContentVC

- (PageContentViewController *)viewControllerAtIndex:(NSUInteger)index 
{ 

    if (([arrPage count] == 0) || (index >= [arrPage 
count])) { 
     return nil; 
    } 
    // Create a new view controller and pass suitable data. 
    pageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageContentViewController"]; 
    pageContentViewController.delagate = self; 
    pageContentViewController.pageIndex = index; 
    pageContentViewController.collselectedType = selectedType; 
    return pageContentViewController; 
} 

вы также можете создать массив contentVC и может установить, что в Pageviewcontroller, но он будет потреблять больший объем памяти

вам может установить массив реселлеров представлений, как показано ниже.

[self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; 
Смежные вопросы