2013-03-10 3 views
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 
+0

См. Http://stackoverflow.com/questions/3040894/uitableview-multiple-selection – aqua

+0

Возможный дубликат [Отображение галочки на ячейках iOS 5] (http://stackoverflow.com/questions/9449568/displaying-checkmark- on-cells-ios-5) – Monolo

ответ

3

Если вы хотите отслеживать несколько галочек, проще всего было бы добавить свойство к объекту Materia, который является BOOL, как IsChecked или что нибудь. В методе cellForRowAtIndexPath вы бы проверили состояние BOOL и добавили галочку, если ее YES, а не если это НЕТ. Вы не должны сохранять ячейки в массиве, ваш массив источников данных, Materias, будет иметь запись о том, какие ячейки выбраны, и вы можете использовать это для любой цели. Вы должны обновить значение этого BOOL в методе didSelectRowAtIndexPath.

+0

Хорошо, спасибо, это звучит хорошо. Но как поместить галочку в ячейку просмотра таблицы на экране? Есть ли какой-нибудь предмет? –

+0

Если вы используете один из стандартных типов UITableViewCell, установите свойство «accessoryType» - cell.accessoryType = UITableViewCellAccessoryCheckmark; - и очистить его: cell.accessoryType = UITableViewCellAccessoryNone; –

+0

@CharliePrice Спасибо. И у меня есть одно последнее сомнение. Когда я запускаю приложение, я хочу коснуться ячейки представления таблицы, в которой я хочу поставить галочку, а затем сделать галочку. Как я могу это сделать? Должен ли я помещать кнопку действия в каждую ячейку таблицы, которую я хочу поставить галочку? –

Смежные вопросы