从NSArray中提取范围

joe*_*oec 19 for-loop objective-c range nsarray ios4

我需要显示6个视图,每个视图应显示20个项目(UIButtons).我有一个大的NSArray,其中包含所有6个视图的项目.

例如,视图1应为项目0-19,视图2应为项目20-39.

我如何从阵列中提取相关范围?也许使用长度为20的NSRange,但是每个视图都需要更改起始位置...理想情况下没有switch语句:)

谢谢

Sve*_*ven 62

 static const NSUInteger ItemsPerView = 20;
 NSUInteger startIndex = viewIndex * ItemsPerView;
 NSUInteger count = MIN( completeArray.count - startIndex, ItemsPerView );
 NSArray *itemsForView = [completeArray subarrayWithRange: NSMakeRange( startIndex, count )];
Run Code Online (Sandbox Code Playgroud)

  • 如果少于kItemsPerView项,则最后一页可能会发生崩溃 (3认同)

Jos*_*zzi 5

你的答案在你的问题中。只需跟踪哪个 NSRange 属于哪个视图,并使用它使用 NSArray 的 -subarrayWithRange: 方法在容器中查找必要的对象。