2013-05-17 89 views
1

我正在寫Iphone應用程序與Icarousel一起使用。我使用了2個旋轉木馬。當我第一次滾動,第二次滾動第一次,當我滾動第二次,第一次滾動第二次。ICarousel菜單無限循環

我可以正確地做到這一點,但我有一個無限循環的問題。

- (void)carouselDidEndScrollingAnimation:(iCarousel *)Carousel 
{ 
    if (Carousel == carouselSecond) 
    { 
     NSLog(@"***Second Scroll"); 
     [carouselFirst scrollToItemAtIndex:carouselSecond.currentItemIndex duration:2]; 
    } 
    else if(Carousel == carouselFirst) 
    { 
     NSLog(@"***First Scroll"); 
    [carouselSecond scrollToItemAtIndex:carouselFirst.currentItemIndex duration:2]; 
    } 
} 

Display是 ** 第二渦旋 * *第一渦旋 ** 第二渦旋 * *第一渦旋 ** 第二渦旋 * *第一渦旋 ** 二Scroll * * First Scroll ......

+0

這怎麼會變成一個無限循環? –

+0

因爲當第二個Carousel滾動時,會再次調用「carouselDidEndScrollingAnimation」。您將需要一些標誌,指示第二個傳送帶是否已經滾動 – gasparuff

回答

2

使用Integer變量來跟蹤傳送帶滾動的次數。在您的.h文件中加入:

@property (nonatomic) NSUInteger numberofScrolls; 

viewDidLoad做到這一點:

self.numberofScrolls=0; 

,並嘗試這個辦法:

- (void)carouselDidEndScrollingAnimation:(iCarousel *)Carousel 
{ 
self.numberofScrolls++; 
if(self.numberofScrolls%2!=0){  
    if (Carousel == carouselSecond) 
    { 
     NSLog(@"***Second Scroll"); 
     [carouselFirst scrollToItemAtIndex:carouselSecond.currentItemIndex duration:2]; 
    } 
    else if(Carousel == carouselFirst) 
    { 
     NSLog(@"***First Scroll"); 
     [carouselSecond scrollToItemAtIndex:carouselFirst.currentItemIndex duration:2]; 
    } 
} 

} 

讓我解釋一下它的作用: 當視圖加載,我們將numberofScrolls設置爲0. 當用戶停止滾動時,carouselDidEndScrollingAnimation被調用 - >我們將numberofScrolls增加1,旋轉木馬2滾動到相同的位置。傳送帶2完成滾動後,將再次調用carouselDidEndScrollingAnimation。我們再次增加numberofScrolls(現在是2)。但是這次我們不需要再次滾動另一個視圖並且self.numberofScrolls%2變爲0.

+0

非常感謝您 – cdsoft

+0

不客氣! – gasparuff