2012-04-07 2 views
2

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

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

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * TUTORIALNUMBEROFPAGES, self.scrollView.frame.size.height); 
    self.scrollView.pagingEnabled = YES; 
    self.scrollView.showsHorizontalScrollIndicator = NO; 
    self.scrollView.showsVerticalScrollIndicator = NO; 
    self.scrollView.scrollsToTop = NO; 
    self.scrollView.delegate = self; 

    self.pageControl.numberOfPages = TUTORIALNUMBEROFPAGES; 
    self.pageControl.currentPage = 0; 

    CGRect pageFrame = self.scrollView.frame; 
    pageFrame.origin.x = pageFrame.size.width * 0; 
    pageFrame.origin.y = 0; 

    self.pageOne.frame = pageFrame; 
    [self.scrollView addSubview:self.pageOne]; 

    pageFrame.origin.x = pageFrame.size.width * 1; 
    self.pageTwo.frame = pageFrame; 
    [self.scrollView addSubview:self.pageTwo]; 
} 

- (void)scrollViewDidScroll:(UIScrollView *)sender 
{  
    if (pageControlUsed) { 
     return; 
    } 

    CGFloat pageWidth = self.scrollView.frame.size.width; 
    int page = floor((self.scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
    self.pageControl.currentPage = page; 
} 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{  
    pageControlUsed = NO; 
} 

- (IBAction)changePage:(id)sender 
{   
    NSInteger currentPage = self.pageControl.currentPage; 
    CGPoint offset = CGPointMake(currentPage * self.scrollView.frame.size.width, 0); 
    [self.scrollView setContentOffset:offset animated:YES]; 
    pageControlUsed = YES; 
} 

- (IBAction)nextButton:(id)sender 
{ 
    [self changePage:self]; 
} 
+0

Что о том, что ваш метод изменения страницы принимают целочисленный аргумент? – CodaFi

+0

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

+0

Затем создайте новый метод, который принимает int. один конкретный для этой кнопки. – CodaFi

ответ

6

Попробуйте что-то вроде этого:

- (IBAction)nextPage:(id)sender 
    {         
    NSInteger currentPage = self.pageControl.currentPage + 1; 
    CGPoint offset = CGPointMake(currentPage * self.scrollView.frame.size.width, 0); 
    [self.scrollView setContentOffset:offset animated:YES]; 
    pageControlUsed = YES; 
} 

    - (IBAction)nextButton:(id)sender 
    { 
      [self nextPage:self]; 

    } 

Обратите внимание на +1 в этом коде. Раньше вы буквально устанавливали смещение содержимого, точно равное исходному смещению, потому что вы просто принимали значение контроля страницы.

+0

Это работает, однако у меня есть две страницы, и это заставляет меня пройти вторую страницу. Как я могу заставить это остановиться на последней странице, не перейдя на другую пустую страницу? – Vikings

+0

Не обращайте внимания, я делал заявление if if неправильным методом. – Vikings

+0

Спасибо за помощь! – Vikings

1

Вы можете попробовать это:

- (IBAction)changePage:(id)sender 
{   
    NSInteger currentPage = self.pageControl.currentPage; 
    if([sender isKindOfClass:[UIButton class]){ 
     currentPage+=1; 
    } 
    CGPoint offset = CGPointMake(currentPage * self.scrollView.frame.size.width, 0); 
    [self.scrollView setContentOffset:offset animated:YES]; 
    pageControlUsed = YES; 
} 

- (IBAction)nextButton:(id)sender 
{ 
    [self changePage:sender];//if this action is attached just to your button 
} 
Смежные вопросы