我遇到了一个小问题。假设我有一个设备列表,放在不同的位置。我在表格列表中输出所有这些设备。其中一些设备碰巧具有相同的位置。 是否可以通过格式化这些单元格周围的粗体/双线来以某种方式对这些表格单元格进行分组? 我知道多个自定义单元格的可能性,但我希望有人有一个更简单的方法:) 谢谢!
答案 0 :(得分:1)
如果您想要下面的内容
将以下代码添加到您的普通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)
用于在组中创建单元格,您可以使用组表。