随机分组 xcode 中的 TableView 数据

Randomly Grouping TableView data in xcode

我想根据条件将单元格分组,但我在错误的地方得到了重复的值。

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return 5;
    }

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        if(section == 0)
        {
            return 1;     
        }
        else if(section == 1)
            {
                return 6;
            }
        else if(section ==2)
        {
            return 2;
        }
        else
        {
         return [arrControls count]-9;
        }    
    }

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        NSString *cellIdentifier = @"cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
        cell.textLabel.text = [arrControls objectAtIndex:indexPath.row];
        return cell;
    }

请详细说明您的问题。很难理解你的问题到底是什么。

如果您对 tableCell 使用 xib 或故事板,请使用此方法 1:

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

static NSString *CellIdentifier = @"MyCellIdentifier";

MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

    NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
    cell = (MyCell *)[nib objectAtIndex:0];

}

如果您没有为单元格使用情节提要,请尝试此方法 2:

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

static NSString *CellIdentifier = @"MyCellIdentifier";

UITableViewCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

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

[cell setNeedsDisplay];

}

希望对您有所帮助..

每个部分使用 arrayNSMutableArray 秒。

NSMutableArray *arrays[5];
for (int i = 0; i < 5;i++)
{
    arrays[i] = [[NSMutableArray alloc]init];
}
[arrays[0] addObject:@"add Your objects in section 0"];
[arrays[1] addObject:@"add Your objects in section 1"];
[arrays[2] addObject:@"add Your objects in section 2"];

等..

然后。

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
   array[section].count
}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 5;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *cellIdentifier = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    cell.textLabel.text = [array[indexPath.section] objectAtIndex:indexPath.row];
    return cell;
}

在您的 cellForRowAtIndexPath 中,您需要 return 不同单元格的不同部分 假设您拥有从 UITableViewCell

继承的 3 个自定义 类(所有这些都有接口)
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
        {
    if(inderPath.Section ==0 )
            {
        //assuing that custom class name is detailTableViewCell.h and interface file name is same .
           static NSString *simpleTableIdentifier = @detailTableViewCell ;
           detailTableViewCell *cell = [tableView  dequeueReusableCellWithIdentifier:simpleTableIdentifier]
            if(cell == nil )
            {
              NSArray *nib= [[NSBundle mainBundle] loadNibNamed:@"detailTableViewCell" ownder self options:nil];
             cell = [nib objectAtIndex:0]

            }

     return cell   ;
    }
    if(inderPath.Section ==1 )
    {
    similarly for another subclass of UItableViewCell ;
    }
  if(inderPath.Section ==2 )
    {
    similarly for another subclass of UItableViewCell ;
    }
    // one common cell for other sections
    NSString *cellIdentifier = @"cell";
            UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
            cell.textLabel.text = [arrControls objectAtIndex:indexPath.row];
            return cell;
    }

试试这个`
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ NSString *cellIdentifier = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if(indexPath.section == 0)
{
cell.textLabel.text = [firstArray objectAtIndex:indexPath.row];
}
否则如果 (indexPath.section == 1)
{
cell.textLabel.text = [secondArray objectAtIndex:indexPath.row];
}
否则如果 (indexPath.section == 2)
{
cell.textLabel.text = [thirdArray objectAtIndex:indexPath.row]; } 否则如果 (indexPath.section == 3)
{
cell.textLabel.text = [thirdArray objectAtIndex:indexPath.row];
}
别的 { cell.textLabel.text = [FourthArray objectAtIndex:indexPath.行];
}
return 单元格;
} `

@达尔维克。每个部分需要不同的数组。而你已经只有一个 mutableArray.

您可以采用数组,其中数组中的每个对象都会为您提供行数组。

您可以使用的数据格式如下

( {键:数组}, {键:数组}, {键:数组}, {键:数组}, )

或者干脆

( (大批), (大批), )

里面,numberOfRowsInSection:你可以使用 { return [[[dataArray objectAtIndex:section]ObjectFoyKey:key]count];

 or

 return [[dataarray objectAtIndex:section]count];  

}

里面,cellFOrRowAtIndexPath:你可以使用 {

 array =  [[dataArray objectAtIndex:section]ObjectFoyKey:key];
 cell.textlabel.text = [array objectAtIndex:indexPath.row];

 or

 array =  [dataArray objectAtIndex:section];
 cell.textlabel.text = [array objectAtIndex:indexPath.row];

}

希望对您有所帮助..