2013-03-10 30 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 2013-03-10 20:32:13

+0

[在iOS 5上顯示覆選標記]的可能重複(http://stackoverflow.com/questions/9449568/displaying-checkmark- on-cells-ios-5) – Monolo 2013-03-10 20:42:26

回答

3

如果你想跟蹤多個複選標記,這將是最簡單的一個屬性添加到您的本草對象是BOOL,像器isChecked或一些東西。在cellForRowAtIndexPath方法中,您將檢查BOOL的狀態,如果其爲YES,則添加複選標記,而如果是NO,則添加複選標記。您不應將單元格保存在數組中,您的數據源數組Materias將記錄選定哪些單元格,並且您可以將其用於任何目的。您將在didSelectRowAtIndexPath方法中更新該BOOL的值。

+0

好的,謝謝,聽起來不錯。但是,如何將複選標記放置在屏幕上的表格視圖單元格中?有沒有特別的項目? – 2013-03-10 20:46:16

+0

如果您使用標準UITableViewCell類型之一設置「accessoryType」屬性--cell.accessoryType = UITableViewCellAccessoryCheckmark; - 並清除它:cell.accessoryType = UITableViewCellAccessoryNone; – 2013-03-10 21:05:50

+0

@CharliePrice謝謝。我最後有一個疑問。當我運行該應用程序時,我想觸摸要放置複選標記的表格視圖單元格,然後使複選標記出現。我怎樣才能做到這一點?我是否必須在每個表格單元格中放置一個操作按鈕,以便放置複選標記? – 2013-03-10 21:23:00

相關問題