如何在表格视图单元格上应用复选标记

时间:2013-03-10 20:05:17

标签: ios objective-c xcode4.6 checkmark

我正在开发一个iOS应用程序,使用Xcode 4.6在Objective-C中编码。我想知道如何在选定的表视图单元格上添加一个复选标记,然后访问已标记为重用它们的那些单元格,例如将它们保存在数组中。这是我的表视图类代码,因此您可以看到:

#import "TablaMateriasViewController2.h"

@interface TablaMateriasViewController2 ()

@end

@implementation TablaMateriasViewController2
@synthesize materias,materiasKeys;
NSMutableArray *Materias;

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
[super viewDidLoad];

Materias = [[NSMutableArray alloc]init ];

Materia  *mat  = [[Materia alloc]init];
[mat setNombre:@"Matematicas I"];
[mat setCodigo:@"FBTMI01"];
[mat setGradoDificultad:3];
[mat setDescripcion:@"..."];
[Materias addObject:mat];

mat  = [[Materia alloc]init];
[mat setNombre:@"Matematicas II"];
[mat setCodigo:@"FBTMI02"];
[mat setGradoDificultad:4];
[mat setDescripcion:@"......"];
[Materias addObject:mat];

mat  = [[Materia alloc]init];
[mat setNombre:@"Fisica I"];
[mat setCodigo:@"FBTFI01"];
[mat setGradoDificultad:2];
[mat setDescripcion:@".."];
[Materias addObject:mat];

mat  = [[Materia alloc]init];
[mat setNombre:@"Fisica II"];
[mat setCodigo:@"FBTFI02"];
[mat setGradoDificultad:4];
[mat setDescripcion:@"!!!!"];
[Materias addObject:mat];

mat  = [[Materia alloc]init];
[mat setNombre:@"Fiscia III"];
[mat setCodigo:@"FBTFI03"];
[mat setGradoDificultad:5];
[mat setDescripcion:@"---"];
[Materias addObject:mat];

mat  = [[Materia alloc]init];
[mat setNombre:@"Estructura de Datos"];
[mat setCodigo:@"BPTPR12"];
[mat setGradoDificultad:4];
[mat setDescripcion:@"Orientacion a objetos"];
[Materias addObject:mat];

mat  = [[Materia alloc]init];
[mat setNombre:@"Algoritmos y Programacion"];
[mat setCodigo:@"BPTPR11"];
[mat setGradoDificultad:3];
[mat setDescripcion:@"estructurada"];
[Materias addObject:mat];

mat  = [[Materia alloc]init];
[mat setNombre:@"Matematicas III"];
[mat setCodigo:@"FBTMI03"];
[mat setGradoDificultad:3];
[mat setDescripcion:@"Mate 3"];
[Materias addObject:mat];    
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}

#pragma mark - Table view data source

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return Materias.count;
}

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

Materia *current = [Materias objectAtIndex:indexPath.row];
[cell.textLabel setText:current.Nombre];

return cell;
}


#pragma mark - Table view delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
}

@end

1 个答案:

答案 0 :(得分:3)

如果要跟踪多个复选标记,最简单的方法是将属性添加到作为BOOL的Materia对象,如isChecked或其他东西。在cellForRowAtIndexPath方法中,您将检查BOOL的状态,如果是,则添加复选标记,如果是,则不添加。您不应该将数组保存在数组中,数据源数组Materias会记录选择了哪些单元格,您可以将它用于任何您想要的目的。您可以在didSelectRowAtIndexPath方法中更新该BOOL的值。