如何在表格视图单元格上应用复选标记
Posted
技术标签:
【中文标题】如何在表格视图单元格上应用复选标记【英文标题】:How to apply check marks on a table view cell 【发布时间】:2013-03-10 20:05:17 【问题描述】:我正在开发一个 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
【问题讨论】:
见***.com/questions/3040894/… Displaying checkmark on cells iOS 5的可能重复 【参考方案1】:如果您想跟踪多个复选标记,最简单的方法是向您的 Materia 对象添加一个 BOOL 属性,例如 isChecked 之类的。在 cellForRowAtIndexPath 方法中,您将检查 BOOL 的状态,如果是,则添加复选标记,如果不是,则不添加复选标记。您不应该将单元格保存在数组中,您的数据源数组 Materias 将记录选择了哪些单元格,您可以将其用于任何您想要的目的。您将在 didSelectRowAtIndexPath 方法中更新该 BOOL 的值。
【讨论】:
好的,谢谢,听起来不错。但是如何将复选标记放在屏幕上的表格视图单元格中?有什么特别的项目吗? 如果您使用的是标准 UITableViewCell 类型之一,请设置“accessoryType”属性 -- cell.accessoryType = UITableViewCellAccessoryCheckmark; -- 并清除它: cell.accessoryType = UITableViewCellAccessoryNone; @CharliePrice 谢谢。我还有最后一个疑问。当我运行应用程序时,我想触摸要打勾的表格视图单元格,然后使勾号出现。我怎样才能做到这一点?我是否必须在要打勾的每个表格单元格中放置一个操作按钮? 好的,非常感谢你们俩!我的问题解决了。 @CharliePrice @rdelmar 好的,非常感谢你们!我的问题解决了。以上是关于如何在表格视图单元格上应用复选标记的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 3 中保存 UITableViewCell 附件复选标记的状态