2012-10-25 12 views
8

Próbuję utworzyć aplikację do ćwiczeń, w której można przewijać obrazy za pomocą kontroli strony. Jestem w stanie przewijać obrazy i włączyć kontrolę strony. Ale problem, który napotykam, polega na tym, że nie jestem w stanie powiązać tych dwóch. Oznacza to, że podczas przewijania obrazów nie ma to wpływu na kontrolkę strony, a po zmianie ustawienia strony przewijanie obrazów nie ma wpływu.Przesuwanie obrazów ze sterowaniem stronami w aplikacji Iphone

Odniosłem się do tego: http://www.iosdevnotes.com/2011/03/uiscrollview-paging/ do przewijania za pomocą kontrolki strony.

Viewcontroller.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController <UIScrollViewDelegate>{ 
    UIScrollView *scrollView; 
    UIPageControl *pageControl; 

    BOOL pageControlBeingUsed; 
} 

@property (nonatomic, retain) IBOutlet UIScrollView *scrollView; 
@property (nonatomic, retain) IBOutlet UIPageControl *pageControl; 

- (IBAction)changePage; 

@end 

Viewcontroller.m

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 

@synthesize scrollView,pageControl; 

- (void)scrollViewDidScroll:(UIScrollView *)sender { 
    if (!pageControlBeingUsed) { 
     // Switch the indicator when more than 50% of the previous/next page is visible 
     CGFloat pageWidth = self.scrollView.frame.size.width; 
     int page = floor((self.scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1; 
     self.pageControl.currentPage = page; 
    } 
} 
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 
    pageControlBeingUsed = NO; 
} 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { 
    pageControlBeingUsed = NO; 
} 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSArray *images = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"1.jpeg"],[UIImage imageNamed:@"2.jpeg"],[UIImage imageNamed:@"3.jpeg" ], nil]; 

    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * images.count, self.scrollView.frame.size.height); 

    for (int i = 0; i < images.count; i++) { 
     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width * i; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 
     UIImageView* imgView = [[UIImageView alloc] init]; 
     imgView.image = [images objectAtIndex:i]; 
     imgView.frame = frame; 
     [scrollView addSubview:imgView]; 
    } 

    self.pageControl.currentPage = 0; 
    self.pageControl.numberOfPages = images.count; 

} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 
- (void)viewDidUnload { 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
    self.scrollView = nil; 
    self.pageControl = nil; 
} 

- (IBAction)changePage{ 
     // update the scroll view to the appropriate page 
     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width * self.pageControl.currentPage; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 
     [self.scrollView scrollRectToVisible:frame animated:YES]; 
     pageControlBeingUsed = YES; 
} 

@end 

Potrzebujesz kilku wskazówek na ten temat ... Dzięki ..

Odpowiedz

3

Sprawdź, czy masz ustawiony delegata widoku przewijania do ViewController

I właśnie ustawiłeś stronęControlBeingUsed na TAK lub NIE i nie zostały wykorzystane w dowolnym miejscu ViewController

+0

gdzie go używać? może dać mi pojęcie, gdzie go użyć? – lakesh

+0

zmieniono kod teraz ... uwzględniono stronęControlBeingUsed w funkcji scrollViewDidScroll .. nadal nie ma różnicy ... – lakesh

+0

Przepraszam ... Ustaw mojego delegata niesłusznie .. dzięki za pomoc ... – lakesh

Powiązane problemy