如何将ViewController中的数组数据传递给UICollectionView Custom Cell?

时间:2016-06-23 04:54:23

标签: ios objective-c arrays uitableview uicollectionview

我在自定义'UICollectionViewCell'中创建一个tableView,在我的ViewController中,我有一个数组,其中包含要在每行的TableView中显示的数据。 因此,我想将此数组的数据传递给自定义单元格(包含tableview委托方法)。

我这样做但没有帮助。

在“GroupCollectionViewCell.m”内部

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *groupTableIdentifier = @"DeptGroupTable";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:groupTableIdentifier];

    if (cell == nil) {

    }
    RoadmapViewController *vc = [[RoadmapViewController alloc] init];
    cell.textLabel.text =[vc.grouplist objectAtIndex:indexPath.row];
    return cell;
}

并在“RoadViewController.m”

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
{
    GroupCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];

    if (cell == nil) {
        cell = [[GroupCollectionViewCell alloc] init];
        // [cell.groupData addObjectsFromArray:_grouplist];
        //:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    return cell;
}

注意 - groupList如果我要传递的数组和groupData是自定义单元格内的空白数组。

2 个答案:

答案 0 :(得分:1)

MutableArray内创建一个CollectionViewCell对象,并在此方法中创建一个

@property (strong, nonatomic) NSMutableArray *arrObj;

-(void)loadTableData(NSMutableArray*)arr {
     self.arrObj = arr;
     [self.tableView reloadData];
     //Now used this arrObj in your delegate and datasource method
}

之后从cellForItemAtIndexPath这样调用此函数

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 

{
    GroupCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
    if (cell == nil) {
        cell = [[GroupCollectionViewCell alloc] init];
        // [cell.groupData addObjectsFromArray:_grouplist];
        //:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    [cell loadTableData:arr];
    return cell;
}

希望这会对你有所帮助。

答案 1 :(得分:0)

如果您使用alloc init创建RoadmapViewController并从中获取grouplist,那么vc.grouplist显然会返回nil

删除这两行:

RoadmapViewController *vc = [[RoadmapViewController alloc] init];
cell.textLabel.text =[vc.grouplist objectAtIndex:indexPath.row];

这样做:

cell.textLabel.text =[_groupData objectAtIndex:indexPath.row];

在" RoadViewController.m"添加此方法:

- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(GroupCollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath{        
    cell.groupData = _groupList;
    [collectionView reloadData];
}