如何在具有 UITableview 行的 UICollectionViewCell 中显示 Json Array 数据?

Posted

技术标签:

【中文标题】如何在具有 UITableview 行的 UICollectionViewCell 中显示 Json Array 数据?【英文标题】:How to display Json Array data inside UICollectionViewCell having UITableview rows? 【发布时间】:2016-06-23 10:32:51 【问题描述】:

我有一个 json 数组作为-

  (
            (
                    (
            xyz,
            abc,
            efg,
            hij
        ),
                    (
            suv,
            xyz,
            pqr,
            lmn
        ),
                    (
            kmn,
            mno,
            "uvw",
            "xt"
        ),
                    (
            "pqr",
            lm
        )
    ),

)

问题是我想在上面的 json 数据数组中给出的集合中的“TableView”行中显示每个名称。这就是为什么我在“UICollectionViewCell”中使用 Tableview 作为

我就是这样做的

“GroupCollectionViewCell”内部-

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath



static NSString *CellIdentifier = @"TableCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) 

    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;


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

return cell;

在“ViewController.h”内-

 - (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:_grouplist];
cell.delegate=self;
return cell;

【问题讨论】:

你的意思是在第一个 CollectionViewCell Excel、Outlook、CMM、下一个 Cell 的 tableView 中的 tableview 中说 SALES、MARKETING、LEGAL、COMPLIANCE? 你的 _groupData 有合适的值吗? 是的,只是这样......@AbhishekPM 我的 _groupData 具有与我发布的 json 数组相同的值。 @Signare _groupData 的计数是多少? 【参考方案1】:

尝试将数组分组为单个数组并传递它的想法。

这是我尝试过的示例,得到的输出如下所示。

for (int i=0; i<responceArray.count; i++) 

    mainARRAY=[responceArray objectAtIndex:i];
    for (int j=0; j<mainARRAY.count; j++)
    
         arrayForEachTable=[mainARRAY objectAtIndex:j];
         [_groupData addObject:arrayForEachTable];
    

要打印 _groupData,您需要对代码进行少许更改

在 GroupCollectionViewCell.h 添加

@property(strong,nonatomic) NSMutableArray *cellData;

在 GroupCollectionViewCell.m 中

添加

- (id)initWithFrame:(CGRect)frame

    self = [super initWithFrame:frame];
    if (self) 

        self.cellData = [[NSMutableArray alloc] init];
    
    return self;

-(void) awakeFromNib
    self.cellData = [[NSMutableArray alloc] init];

在您拥有 tableView DataSoure 方法的 GroupCollectionViewCell.m 内

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    static NSString *CellIdentifier = @"TableCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    
    cell.textLabel.text = [self.cellData objectAtIndex:indexPath.row];

    return cell;

在“ViewController.h”内-

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

        cell.cellData = [_groupData objectAtIndex:indexPath.row];//here you pass the content for printing the array
        cell.delegate = self;
        return cell;
    

【讨论】:

什么是 responseArray 和 arrayForEachTableData? 您从 json 响应中处理的第一个数组是“responseArray”“mainArray”将为存储在“arrayForEachTableData”中的每个表提供一组数组 你能告诉我你是如何在方法 "(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath" @AbhishekPM 中打印数组 "_groupData" 我已经编辑了我的答案,它将按照您的要求打印 _groupData。 嘿@AbhishekPM 你能把这个项目发给我吗,因为我正在尝试这个,在我的情况下它的打印“(”无处不在。请帮忙。拜托。

以上是关于如何在具有 UITableview 行的 UICollectionViewCell 中显示 Json Array 数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITableview 中创建具有 n 行数的 UITextField

如何让 UITableView 透明

具有不同部分的 CheckBox UITableView

如何启用移动但禁用 UITableView 中某些行的删除

如何在 UITableView 中显示零行的表格

在 UITableView 中,如何在隐藏行后关闭行的底部边框?