2012-04-07 5 views
2

Ich habe eine einfache Seitensteuerung eingerichtet mit zwei verschiedenen Seiten. Ich habe eine Schaltfläche namens nextButton, und wenn der Benutzer diese Schaltfläche drückt, möchte ich die Seite ändern und zur nächsten Seite blättern.Seitensteuerung mit Taste ändern

Meine Seite Kontrolle funktioniert, und ich kann scrollen, um Seiten zu ändern, aber die Schaltfläche funktioniert überhaupt nicht. Es wird jedoch genannt.

- (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

Was ist mit Ihrer Änderung Seite Methode nimmt ein Integer-Argument zu machen? – CodaFi

+0

Diese Methode ist an die Seitensteuerung gebunden, ich möchte immer noch in der Lage sein, auf die Seitensteuerschaltflächen zu klicken und die Seiten wechseln zu lassen. – Vikings

+0

Dann machen Sie eine neue Methode, die ein int. eine spezifische für diese Schaltfläche. – CodaFi

Antwort

6

so etwas wie dieses Versuchen:

- (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]; 

    } 

Beachten Sie die +1 in diesem Code. Zuvor haben Sie den Inhaltsoffset exakt auf den ursprünglichen Offset gesetzt, da Sie nur den Wert des Seitensteuerelements übernommen haben.

+0

Das funktioniert, aber ich habe derzeit zwei Seiten, und das bringt mich über die zweite Seite. Wie sollte ich das auf der letzten Seite stoppen, ohne auf eine andere leere Seite zu wechseln? – Vikings

+0

Macht nichts, ich habe meine if-Anweisung in die falsche Methode gesetzt. – Vikings

+0

Danke für die Hilfe! – Vikings

1

Sie können mit diesem versuchen:

- (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 
} 
Verwandte Themen