2014-10-22 68 views
0

我發現這很難放上標題,所以請隨時修改它。條件語句+ UITableView:在數組中反覆重複值

我有一個數組,其中包含我在cellForRowAtIndexPath中使用的5 CGSizes

NSArray *mElements = [NSArray arrayWithObjects:[NSValue valueWithCGSize: 
         CGSizeMake(600.0, 900.0)], 
         [NSValue valueWithCGSize:CGSizeMake(300.0, 800.0)], 
         [NSValue valueWithCGSize:CGSizeMake(546.0, 1032.0)], 
         [NSValue valueWithCGSize:CGSizeMake(300.0, 700.0)], 
         [NSValue valueWithCGSize:CGSizeMake(300.0, 800.0)], 
         nil]; 

我目前從數組中取出一個隨機大小並應用到每個單元格,給它一個交錯的佈局。但問題是,如果我重新加載UITableView所有的行將有不同的大小,這是顯而易見的,因爲它會每次選擇一個隨機值。

int random = arc4random_uniform((uint32_t) mElements.count); 
CGSize size =[[mElements objectAtIndex:random] CGSizeValue]; 

但是我想要的效果是row 0將始終具有相同的尺寸,該陣列的可能是指數0。然後row 1在索引1處具有值,然後在索引2處具有值2,依此類推。然後,我想索引4處的row在數組的索引0處具有值(因此數組再次啓動)。我試過這個,但它需要太多的硬編碼。

if (indexPath.item%2 && !indexPath.item%4) { 

    size =[[mElements objectAtIndex:1] CGSizeValue]; 
} 
else if(indexPath.item%3 && !indexPath.item%6){ 
    size =[[mElements objectAtIndex:2] CGSizeValue]; 

} 
else if(indexPath.item%4){ 

    size =[[mElements objectAtIndex:2] CGSizeValue]; 

} 
//... and so on 

林希望能得到幫助創造,我沒有硬編碼表中的每一個可能的row指數動態條件狀態。儘管我似乎無法擺脫困境。

回答

1
size = [[mElements objectAtIndex:indexPath.row % [mElements count]] CGSizeValue]; 

這會給你一個不斷重複的模式。 行數可能是

return [mElements count]*ROW_MULTIPLYER; 

其中

#define ROW_MULTIPLYER 10000 
+0

這似乎做的工作。沒有必要使用返回值,因爲我的單元格是從網絡動態的。 – DevC 2014-10-22 12:00:40

+0

很酷。 numRows的東西主要是如果有人想要在將來僞無限滾動效果......但你是對的它不適用於你的問題。 – Magoo 2014-10-22 13:34:29