tengo una NSDictionary que contiene todos los datos:Problema con una casilla de verificación en un viewbased NSTableView
- un título (no es importante para esta pregunta)
- Un enlace (no es importante para esta pregunta)
- una serie de NSDictionary que contiene 1 nuevo título y 1 enlace
estoy mostrando estos datos en una vista basada vista de tabla como esta:
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tv
{
if (tv == _downloadTable)
//I use this "if" because I have another tableView that has nothing to do
//with this one
{
return [[myDictionary objectForKey:@"myArray"] count];
}
}
Quiero 2 columnas en este tableView
, una para mostrar el título y otra con una casilla de verificación, que haría algo para saber qué fila está marcada.
- (NSView *)tableView:(NSTableView *)tv viewForTableColumn :(NSTableColumn *)tableColumn row :(NSInteger)row
{
if (tv == _downloadTable)
{
if (tableColumn == _downloadTableTitleColumn)
{
if ([[[myDictionary objectForKey:@"myArray"]objectAtIndex:row]objectForKey:@"title"])
{
NSString *title = [[[myDictionary objectForKey:@"myArray"]objectAtIndex:row]objectForKey:@"title"];
NSTableCellView *result = [tv makeViewWithIdentifier:tableColumn.identifier owner:self];
result.textField.stringValue = title;
return result;
}
}
if (tableColumn == _downloadTableCheckColumn)
{
NSLog(@"CheckBox"); //I wanted to see exactly when that was called
//But it didn't help me :(
NSButton *button = [[NSButton alloc]init];
[button setButtonType:NSSwitchButton];
[button setTitle:@""];
return button;
}
}
}
este momento cuando lo ejecuto y haga clic en la casilla de verificación no hace nada (por supuesto, porque no sé cómo hacer que haga algo. ¿Dónde debo poner el código que se debe hacer algo?
el objetivo principal es una lista editable de descargas, en este momento se muestra la lista, con la casilla de verificación junto al título en cada línea. me gustaría saber qué checkBox se comprueban y cuáles no.
Intenté esto:
[button setAction:@selector(checkBoxAction:)];
- (void)checkBoxAction: (id)sender
{
NSLog(@"I am button : %@ and my state is %ld", sender, (long)[sender state]);
}
Pero no puedo averiguar cómo obtener la fila de ese botón, para saber qué título está asociado con este checkbox.
También probé el método setObjectValue
del tableView
sin éxito.
La forma me gustaría que funcione es:
tengo un botón "iniciar la descarga" que compruebe si cada casilla está marcada o no y lanzar la siguiente acción (descarga) sólo con la fila marcada.
Me gustaría evitar las encuadernaciones porque planeo hacer que funcione también en iOS y no quiero tener un código diferente para iOS.
No he negado:/De hecho, estoy leyendo la publicación que acaba de vincular – ItsASecret
DEBE poder hacer las ediciones simples que he puesto en mi publicación, no necesariamente estaba hablando para la nega ción. ¡¡¡Aún necesitarás pensar en el dequeing !!! – trumpetlicks
¡Aquí también hay un GRAN enlace en el dibujo personalizado de UITableView, también habla de las cosas deque! http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html – trumpetlicks