2014-02-28 69 views
0

我想將所有cell.img.tag添加到我的nsmutable數組中。但是,我嘗試了多種方式來執行此操作,例如for循環,但每次結果都不正確。我需要將每個單獨的標記添加到NSMutableArray。我會在下面發佈我的代碼給你一個想法。注意:這只是爲了展示我在做什麼,這不是我嘗試使用的方法來完成這項工作。正確添加標記項到一個nsmutable陣列

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    Cell *cell = (Cell*)[collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath]; 
    NSString *string = [addressString valueForKey:@"number"]; 
    array = [[NSMutableArray alloc]init]; 
    cell.img.tag = string.intValue; 
    [array addObject:[NSNumber numberWithInt:cell.img.tag]]; 
    return cell; 
} 

編輯:當我用for循環,它會顯示所有的標籤,但剛剛結束了相同的值創建多個陣列,每個陣列重複多次,像這樣。 (1,1,1)(2,2,2)。

回答

1

這條線的問題是:

array = [[NSMutableArray alloc]init]; 

每個cellForItemAtIndexPath函數被調用你基本上摧毀了陣列並創建一個新的空一次。

將代碼行移動到其他位置(例如,在init方法中)。

0

代碼有兩個問題。首先是每次數據源獲取單元格時的數組分配..我懷疑這不是真的在你的實現中,因爲你說「這不是我試圖用來完成這個工作的方法。」

另一個問題,你一遍又一遍看到同一個對象的原因是你獲取的模型部分NSString *string = [addressString valueForKey:@"number"];對於傳遞給數據源的indexPath是不變的。

您是否有地址數組?這會更有意義:

NSString *addressString = self.myArrayOfAddressesWichIsMyModel[indexPath.row]; 
NSString *string = [addressString valueForKey:@"number"]; 

現在字符串每次都會改變。重新檢查你的數據源方法collectionView:numberOfItemsInSection:你可能正在回答一些數組的計數。這就是你的cellForItem方法中必須由indexPath.row取消引用的數組。