2011-12-22 6 views
-1

이전 버튼을 누르면 아무런 효과가 없습니다. 다음 버튼은 제대로 작동하지만 이전 버튼에는 이전 이미지가 표시되지 않습니다. 나는 이미지를로드 할 scroll view을 사용하고 있습니다 : 사용자가 세 번째 이미지에 도달 할 때버튼 클릭을 사용하여 ScrollView에서 이전 이미지 이동

- (IBAction)next{ 
    int arraycount = [appDelegate.articles count]; 
    for (int nextIndex = [pageControl currentPage]; nextIndex < arraycount; nextIndex++) { 
     if (self.scrollView.contentOffset.x <= self.scrollView.frame.size.width) { 
      CGRect frame; 
      frame.origin.x = self.scrollView.contentOffset.x +  self.scrollView.frame.size.width; 
      frame.origin.y = 0; 
      frame.size = self.scrollView.frame.size; 
      [self.scrollView scrollRectToVisible:frame animated:YES]; 
      pageControlBeingUsed = YES; 
     } 
    } 
} 

-(IBAction)previousButtonAction 
{ 
    int arraycount = [appDelegate.articles count]; 
    NSLog(@" arraycount : %d", arraycount); 
    NSLog(@" [pageControl currentPage] : %d", [pageControl currentPage]); 
    for (int nextIndex = [pageControl currentPage]; nextIndex>arraycount; nextIndex--) { 
     if (self.scrollView.contentOffset.x >= self.scrollView.frame.size.width) { 
      CGRect frame; 
      frame.origin.x = self.scrollView.contentOffset.x + self.scrollView.frame.size.width; 
      frame.origin.y = 0; 
      frame.size = self.scrollView.frame.size; 
      [self.scrollView scrollRectToVisible:frame animated:YES]; 
      pageControlBeingUsed = YES; 
     } 
    } 
} 

답변

4

가 좋아, 지금은 다르게이 접근 것이라고 생각합니다. 내가 다시 할당하기 전에 현재 오프셋을 확인합니다.

검증되지 않은 코드 :

- (IBAction)next{ 
    if (self.scrollView.contentOffset.x <= self.scrollView.frame.size.width) { 
     CGRect frame; 
     frame.origin.x = self.scrollView.contentOffset.x + self.scrollView.frame.size.width; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 
     [self.scrollView scrollRectToVisible:frame animated:YES]; 
     pageControlBeingUsed = YES; 
    } 
} 
+0

에서 발생합니다. 여기에서 언급하지 않은 루프의 인덱스 값 – user1107725

+0

doh! 위의 편집 된 답변. – ader

+0

그 이전에 원한다면 작동하는 완벽한 감사 만이 감소 기호 만 사용할 수 있습니다. – user1107725

0

나는 "다음"버튼을 비활성화한다.

- (IBAction)next{ 
int arraycount = [appDelegate.articles count]; 
for (int nextIndex = [pageControl currentPage]; nextIndex < arraycount; nextIndex++) {  
    if (nextIndex < arraycount) { 
     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width * nextIndex; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 
     [self.scrollView scrollRectToVisible:frame animated:YES]; 
      pageControlBeingUsed = YES; 
     } 
     // If the user clicks on next in the last item, return to the first 
     else { 
     CGRect frame; 
     frame.origin.x = 0; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 
     [self.scrollView scrollRectToVisible:frame animated:YES]; 
      pageControlBeingUsed = YES; 
     } 
    } 

}

+0

else 문 내에서 단추를 사용할 수 없지만 다시 두 번째 이미지로 돌아갑니다. – user1107725

0

arraycount = 사용자가 세 번째 이미지에서 "다음"누를 때 첫 번째 이미지로 돌아하려는 경우이 경우를 표시하는 경우, 당신은 당신 후에 다른 추가를 추가해야합니다 당신이 2

가 루프에 들어간 있도록 루프은, nextIndex이 arrayCount 미만이 동일하여 그렇게 시작을 동일 3 페이지에있는 경우 3

[pageControl currentPage]는 제로가 너무 인덱스입니다. 에

변화를 :

for (int nextIndex = [pageControl currentPage]; nextIndex < (arraycount-1); nextIndex++) { 

괜찮이 출력 무엇을 :

- (IBAction)next{ 
    int arraycount = [appDelegate.articles count]; 
NSLog(@" arraycount : %d", arraycount); 
NSLog(@" [pageControl currentPage] : %d", [pageControl currentPage]); 
    for (int nextIndex = [pageControl currentPage]; nextIndex < (arraycount-1); nextIndex++) { 
NSLog(@" nextIndex : %d", nextIndex); 
     CGRect frame; 
     frame.origin.x = self.scrollView.frame.size.width * nextIndex; 
     frame.origin.y = 0; 
     frame.size = self.scrollView.frame.size; 
     [self.scrollView scrollRectToVisible:frame animated:YES]; 
      pageControlBeingUsed = YES; 

     } 
} 
+0

문제가 있다고 말하는 것은 내 코드에서 3 번 이미지에 도달 한 후 ob 단추를 클릭하면 다시 이동합니다. – user1107725

+0

중단 점을 설정하고 코드를 단계별로 실행하여 for 루프로 들어가는 이유를 확인하십시오. 또는 위의 코드처럼 nslogs를 시도하십시오. – ader

+0

arraycount 3 및 nextIndex 값 1 만 제공합니다. – user1107725

0

나 Fo로는 @ader에 신속 3.

func prevAction (sender:UIButton) 
{ 
    print("self.scView.contentOffset.x ..\(self.scView.contentOffset.x)") 
    if (self.scView.contentOffset.x <= self.scView.contentSize.width) 
    { 
     var frame = CGRect() 

     frame.origin.x = self.scView.contentOffset.x - 80; 
     frame.origin.y = 0; 
     frame.size = self.scView.frame.size; 

     self.scView .scrollRectToVisible(frame, animated: true) 

    } 


} 

감사에서 일하고있다.

관련 문제