программа получила сигнал exc_bad_access на scrollViewDidScroll - PullRequest
1 голос
/ 13 октября 2011

В моем приложении я попытался сделать scrollView с помощью pageController. PageController работает, но scrollView не работает. Когда я пытаюсь перейти на следующую страницу, я всегда получаю program received signal exc_bad_access в строке [self loadScrollViewWithPage:page];

из метода scrollViewDidScroll

Я не вижу, где моя ошибка. Пожалуйста, посмотрите на этот код ...

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self getVehicules];

    vosvehiculeScrollView.pagingEnabled = YES;
     vosvehiculeScrollView.contentSize = CGSizeMake(vosvehiculeScrollView.frame.size.width * pageControlVehiculePossedee.numberOfPages, vosvehiculeScrollView.frame.size.height);
    vosvehiculeScrollView.showsHorizontalScrollIndicator = NO;
    vosvehiculeScrollView.showsVerticalScrollIndicator = NO;
    vosvehiculeScrollView.scrollsToTop = NO;

    pageControlVehiculePossedee.numberOfPages=[vehiculesPossede count];
    pageControlVehiculePossedee.currentPage=0;
    [pageControlVehiculePossedee addTarget:self action:@selector(pageAction:) forControlEvents:UIControlEventValueChanged];

    for (int i=0; i<pageControlVehiculePossedee.numberOfPages;i++){
        [self loadScrollViewWithPage:i];
    }

}

- (void) loadScrollViewWithPage: (int) page {
    if (page < 0) return;
    if (page >= [vehiculesPossede count]) return;    

    CGRect frame = vosvehiculeScrollView.frame;
    frame.origin.x = frame.size.width * page;
    frame.origin.y = 0;
    viewVehicules.frame = frame;
    [vosvehiculeScrollView addSubview:viewVehicules];

    NSLog(@"%d",page);

}

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

    CGFloat pageWidth = vosvehiculeScrollView.frame.size.width;
    int page = floor((vosvehiculeScrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    pageControlVehiculePossedee.currentPage = page;

    [self loadScrollViewWithPage:page - 1];
    [self loadScrollViewWithPage:page];
    [self loadScrollViewWithPage:page + 1];

}

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

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

-(void)pageAction:(UIPageControl*)control
{       
    NSLog(@"page changed"); 

    int page = pageControlVehiculePossedee.currentPage;
    NSLog(@"page %d", page);

    CGRect frame;
    frame.origin.x = self.vosvehiculeScrollView.frame.size.width * self.pageControlVehiculePossedee.currentPage;
    frame.origin.y = 0;
    frame.size = self.vosvehiculeScrollView.frame.size;
    [self.vosvehiculeScrollView scrollRectToVisible:frame animated:YES];

    pageControlUsed = YES;
}
...