2010-10-04 29 views
17

我需要顯示6個視圖,每個視圖應該顯示20個項目(UIButtons)。我有一個大的NSArray,其中包含所有6個視圖的項目。從NSArray中提取一個範圍

例如,視圖1應該是項目0-19,視圖2應該是項目20-39。如何從數組中提取相關範圍?也許使用NSRange與20的長度,但起始位置需要改變每個視圖...不理想:) switch語句

感謝

回答

61
static const NSUInteger ItemsPerView = 20; 
NSUInteger startIndex = viewIndex * ItemsPerView; 
NSUInteger count = MIN(completeArray.count - startIndex, ItemsPerView); 
NSArray *itemsForView = [completeArray subarrayWithRange: NSMakeRange(startIndex, count)]; 
+3

如果小於kItemsPerView項目,可能會發生最後一頁崩潰 – lefakir 2012-08-01 19:10:20

+1

@lefakir答案現在已修復。 – Sven 2014-03-22 07:44:52

3

你的答案是你的問題。只需跟蹤哪個NSRange屬於哪個視圖,並使用它來使用NSArray的-subarrayWithRange:方法在容器中查找必要的對象。

+0

所有我已經是表示視圖一個INT,所以是有比'更好的方式,如果(圖== 0){NSMakeRange(0,20); } else if(view == 1)...'? – joec 2010-10-04 16:21:51

+0

您需要提供更多信息。我不確定你在這裏問什麼。 – 2010-10-04 17:44:53