Управление страницей через массив - PullRequest
0 голосов
/ 29 октября 2011

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

Однако при переключении страниц цвет фона и некоторые изображения меняются.Есть ли способ запустить код после переключения страницы?

Спасибо

1 Ответ

3 голосов
/ 31 октября 2011

UIPageControl только представляет пейджинг, он не управляет самим поведением пейджинга. Вам нужно будет написать свой собственный код для перебора массива при нажатии на UIPageControl. Свойство currentPage должно быть установлено на индекс, с которым вы работаете в вашем массиве, свойство totalPages должно быть установлено на свойство count массива. Наконец, вам нужно установить пару цель / действие для события UIControlEventValueChanged, используя -addTarget:action:forControlEvents:

[pageControl addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];

Документация гласит :

Когда пользователь касается элемента управления страницы, чтобы перейти на следующую или предыдущую страницу, элемент управления отправляет событие UIControlEventValueChanged для обработки делегатом. Затем делегат может оценить свойство currentPage, чтобы определить страницу для отображения. Элемент управления страницы перемещается только на одну страницу в любом направлении.

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

Пример:

@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
@property (strong, nonatomic) NSArray *items;

[...]

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    self.items = [NSArray arrayWithObjects:@"One",@"Two",@"Three",@"Four",@"Five",@"Six",@"Seven",@"Eight",@"Nine",@"Ten", nil];
    [self.pageControl addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];

    // Left Swipe to go to previous page
    UISwipeGestureRecognizer *leftSwipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(previousPage:)];
    leftSwipeGestureRecognizer.direction = numberOfTouchesRequired = 1;
    leftSwipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
    [self.view addGestureRecognizer:leftSwipeGestureRecognizer];

    // Right Swipe to go to next page
    UISwipeGestureRecognizer *rightSwipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(nextPage:)];
    rightSwipeGestureRecognizer.direction = numberOfTouchesRequired = 1;
    rightSwipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
    [self.view addGestureRecognizer:rightSwipeGestureRecognizer];

}

- (void)previousPage:(UISwipeGestureRecognizer *)swipeGestureRecognizer
{
    self.pageControl.currentPage = self.pageControl.currentPage-1;
}

- (void)nextPage:(UISwipeGestureRecognizer *)swipeGestureRecognizer
{
    self.pageControl.currentPage = self.pageControl.currentPage+1;
}

- (void)pageChanged:(id)sender
{
    NSString *selectedItem = [self.items objectAtIndex:self.pageControl.currentPage];
    NSLog(@"\nSelected Item: %@\nCurrent Page: %d\nTotal Number of Pages: %d\n", selectedItem, self.pageControl.currentPage+1, self.pageControl.numberOfPages);
}

Когда вы щелкаете элемент управления страницей, он перемещается вперед или назад по массиву строк, представленных свойством self.items. -pageChanged: - это место, где вы также обновите элементы управления в представлении.

Если вы хотите обновить текущую страницу в UIPageControl в другой области, просто выполните:

self.pageControl.currentPage = 5;  // set to whatever page you need represented
...