2012-04-07 63 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 2012-04-07 22:41:23

+0

該方法綁定到頁面控件,我想仍然能夠單擊頁面控件按鈕並使其更改頁面。 – Vikings 2012-04-07 22:43:39

+0

然後創建一個接受int的新方法。一個特定於該按鈕。 – CodaFi 2012-04-07 22:47:13

回答

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的代碼。在此之前,你真的將內容偏移量exactley設置爲等於原始偏移量,因爲你只是取得了頁面控件的值。

+0

這可行,但我目前有兩頁,這需要我通過第二頁。我怎樣才能在不翻到另一個空白頁的情況下停止在最後一頁? – Vikings 2012-04-07 23:00:37

+0

沒關係,我把我的if語句寫在了錯誤的方法中。 – Vikings 2012-04-07 23:02:22

+0

感謝您的幫助! – Vikings 2012-04-07 23:02:30

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 
}