如何在循环中增加索引&停止枚举?

时间:2016-03-16 20:40:45

标签: ios objective-c for-loop

我遇到了需要循环的情况,但下面的代码只返回最后一个索引值。我需要它来返回下一个值并停止枚举。为了更好地解释,假设我有数字0-10,当按下按钮时我需要将索引增加1。现在说我一直按下这个按钮直到索引达到10,在下一次按下时,索引需要回零(也就是循环通过。)

任何帮助都将受到赞赏&我绝对会接受最好的答案。

提前致谢!

//grabs current index in a scrollview
long long currentSelectedIndex = [preview.swipeView currentIndex];
long long totalNumberOfAvailableSlots = [preview.swipeView indexTotal]; //index total is never an absolute value

@autoreleasepool {
    //currentSelectedIndex is supposed/always to be zero on first run
    for (int i; = (int)currentSelectedIndex; i <= totalNumberOfAvailableSlots; i++){
        NSLog(@"loop: %d", i);
        if (i == totalNumberOfAvailableSlots){
            i = -1;
            [preview.swipeView scrollToIndex:i]; //this will cause [preview.swipeView currentIndex] to be updated with "i" value.
        }
    }
}

2 个答案:

答案 0 :(得分:1)

根据我的评论,您似乎想要的行为是自动滑动swipeView的内容。

制作一个调用swipeToNext方法的计时器:

myTimer = [NSTimer scheduledTimerWithTimeInterval: target:self selector:@selector(swipeToNext) userInfo:nil repeats:YES];

然后处理滑动:

- (void)swipeToNext { if ([preview.swipeView currentIndex] < [preview.swipeView indexTotal]) { //Can swipe forward [preview.swipeView scrollToIndex:[preview.swipeView currentIndex]+1]; } else { //At last index. Need to go to first. [preview.swipeView scrollToIndex:0]; } }

答案 1 :(得分:0)

听起来你需要currentSelectedIndex来完成这个重复序列0,1,2,3,4,5,6,7,8,9,10,0,1,......

formLoad内你需要初始化你的计数器

 currentSelectedIndex = 0

在按下按钮的方法中,递增计数器 - 但使用模运算符返回余数 - 在这种情况下除以11

currentSelectedIndex = (currentSelectedIndex + 1) % 11

一般来说,你可以像这样生成一个0 ... n的序列

currentSelectedIndex = (currentSelectedIndex + 1) % (n + 1)