Puede agregar el UISwitch
en la vista de accesorios. Esa es la forma más fácil de hacerlo, sin mencionar que se ve 'elegante'.
Luego, en su código de controlador de vista de tabla, puede simplemente llamar a un selector cada vez que se conmuta el interruptor, o incluso alternar el interruptor obteniendo el estado actual del conmutador en su controlador.
Hazle saber si deseas una muestra de código.
--- --- código de ejemplo
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
//add a switch
UISwitch *switchview = [[UISwitch alloc] initWithFrame:CGRectZero];
cell.accessoryView = switchview;
[switchview release];
}
cell.textLabel.text = [NSString stringWithFormat:@"%d", indexPath.row];
return cell;
}
Entonces, usted podría tener un método que actualiza un interruptor basado en los cambios en su modelo. Se podría utilizar cualquier cosa que usted quiere - delegados, notificaciones, MVA, etc.
Ejemplo:
- (void)updateSwitchAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
UISwitch *switchView = (UISwitch *)cell.accessoryView;
if ([switchView isOn]) {
[switchView setOn:NO animated:YES];
} else {
[switchView setOn:YES animated:YES];
}
}
código smaple sería genial, gracias – eemceebee
Editado para incluir algunos ejemplos de código. –
Me pregunto si tendrías un ejemplo con respecto a KVO usado para UISwitch. Intento implementar como 'UISwitch * switchview = [[UISwitch alloc] initWithFrame: CGRectZero]; celular.accessoryView = switchview; [switchview addObserver: self forKeyPath: @ "on" options: NSKeyValueChangeSetting context: NULL]; 'pero mi función' - (void) observeValueForKeyPath: (NSString *) keyPath ofObject: (id) object change: (NSDictionary *) contexto de cambio: (void *) context { NSLog (@ "observeValorParaKeyPath"); } 'no se invocó cuando el valor del Switch cambió – user454083