一切正常,除了后退按钮有一个我不太了解的缺陷。
我找到了解决方法,但我想了解为什么代码的行为如此怪异。
数组末尾有一个nil对象。
应该是但不能工作的代码(索引超出范围):
- (IBAction)back-button:(id)sender
{
currentArrayIndex--;
if (currentArrayIndex == 0)
{
currentArrayIndex = [array count];
}
}
这是固定但看似错误的代码:
- (IBAction)back-button:(id)sender
{
currentArrayIndex--;
if (currentArrayIndex == -1)
{
currentArrayIndex = [array count] -1;
}
else if (currentArrayIndex == -2)
{
currentArrayIndex = [array count];
}
}
现在从数学和程序上讲都没有意义。
“下一个”按钮的代码非常简洁明了,并且可以循环使用。
最佳答案
最高索引是count - 1
,因为数组是从零开始的索引。因此,最低的索引是0
,如果要以相反的顺序在数组上循环,则第二个代码是正确的(可以删除else if
部分)。最后但并非最不重要的一点是,确保currentArrayIndex
是一个有符号整数,否则它将永远不会成为-1
。