3

我正在开发一个 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
4

1 回答 1

3

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

于 2013-03-10T20:33:25.680 回答