2013-05-17 3 views
1

Я пишу приложение Iphone, используя Icarousel. Я использовал 2 карусели. Когда я прокручиваю сначала, вторая прокрутка с первой и когда я прокручиваю вторую, сначала прокручиваемся со второй.ICarousel Menu бесконечный цикл

Я могу сделать это правильно, но у меня есть проблема, которая представляет собой бесконечный цикл.

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

Дисплей ** Второй Свиток * * Первый Свиток ** Второй Свиток * * Первый Свиток ** Второй Свиток * * Первый Свиток ** Второй Свиток * * Первый свиток ...

+0

как это становится бесконечной петлей? –

+0

Потому что '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

Смежные вопросы