分组一些表格单元格

时间:2011-04-04 06:52:06

标签: iphone cocoa-touch

我遇到了一个小问题。假设我有一个设备列表,放在不同的位置。我在表格列表中输出所有这些设备。其中一些设备碰巧具有相同的位置。 是否可以通过格式化这些单元格周围的粗体/双线来以某种方式对这些表格单元格进行分组? 我知道多个自定义单元格的可能性,但我希望有人有一个更简单的方法:) 谢谢!

3 个答案:

答案 0 :(得分:1)

如果您想要下面的内容

enter image description here

将以下代码添加到您的普通tableview中,并根据您在每个位置的设备数量的位置和行数返回这些部分

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 5.0;
}
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView* view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 2)];
    view.backgroundColor = [UIColor blackColor];
    return view;
}

答案 1 :(得分:1)

我不确定我是否理解您的问题,但您可以根据某些数据自定义任何单元格,以便按照您希望的方式进行查看。

假设您设置了一个设备数组,其名称和位置如下:

    // keys in your device object
NSArray *aKeys = [NSArray arrayWithObjects:@"name", @"location", nil];
// 1st device (in location 1)
NSDictionary *device1 = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"Device 1", @"Location 1", nil] forKeys:aKeys];
// 2nd device (in location 2)
NSDictionary *device2 = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"Device 2", @"Location 2", nil] forKeys:aKeys];
// 3rd device (in location 1 like device 1)
NSDictionary *device3 = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"Device 3", @"Location 1", nil] forKeys:aKeys];
// array of devices
NSArray *aDevices = [NSArray arrayWithObjects:device1, device2, device3, nil];

在你的tableView:(UITableView *)tv中          然后,您可以检查并突出显示每个类型位置的cellForRowAtIndexPath:(NSIndexPath *)indexPath方法。在这种情况下,我只是在单元格的边缘添加彩色条带,颜色根据位置的不同而变化,如下所示:

    if([[aDevices objectAtIndex:indexPath.row] objectForKey:@"location"] == @"Location 1"){
    // if location is Location 1 then we'll add an ORANGE colored strip to the left indicating location 1
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"location1Cell"];
    if( cell == nil ) { 
        cell = [[[UITableViewCell alloc]
                 initWithFrame:CGRectZero reuseIdentifier:@"location1Cell"] autorelease];
        // colored strip
        UIView *vwLoc =  [[[UIView alloc] 
                    initWithFrame:CGRectMake(0.0, 0.0, 5.0, 20.0)] autorelease];
        [vwLoc setBackgroundColor:[UIColor orangeColor]];
        [cell.contentView addSubview:vwLoc];
    }
} else if([[aDevices objectAtIndex:indexPath.row] objectForKey:@"location"] == @"Location 2"){
    // if location is Location 2 then we'll add an YELLOW colored strip to the left indicating location 2
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"location2Cell"];
    if( cell == nil ) { 
        cell = [[[UITableViewCell alloc]
                 initWithFrame:CGRectZero reuseIdentifier:@"location2Cell"] autorelease];
        // colored strip
        UIView *vwLoc =  [[[UIView alloc] 
                           initWithFrame:CGRectMake(0.0, 0.0, 5.0, 20.0)] autorelease];
        [vwLoc setBackgroundColor:[UIColor yellowColor]];
        [cell.contentView addSubview:vwLoc];
    }
}
// if location 3, location 4, etc. ...

答案 2 :(得分:0)

用于在组中创建单元格,您可以使用组表。