2011-11-23 12 views
6

Estoy colocando un UISwitch es en UITableViewCell s e intento para desactivarlo inicialmente:Nueva iOS5 UISwitch no se ve con discapacidad en una UITableViewCell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    ... 
    self.switch = [[UISwitch alloc] init]; 
    self.switch.enabled = NO; 
    cell.accessoryView = self.switch; 
    ... 
} 

En versiones de IOS antes de iOS5, la (Antiguo- buscando) el interruptor está deshabilitado y también se ve deshabilitado (atenuado) cuando aparece la vista.

En IOS5 el interruptor (de nuevo aspecto) está desactivado correctamente, no puedo voltearlo, pero no parece deshabilitado en esta etapa. Tiene el mismo brillo que un interruptor habilitado.

Si habilito y vuelvo a desactivarlo más adelante en el código (NO en la devolución de llamada cellForRowAtIndexPath:), parece deshabilitado (atenuado).

¿Estoy haciendo algo mal o es esto un error en IOS5?

+0

No utilice 'switch' como el nombre del interruptor, es una palabra reservada en Objective-C. –

Respuesta

3

Por lo que vale, el inicializador designado por UISwitch es -initWithFrame: - ha intentado usar eso?

+0

Sí lo hice inicialmente, no resolvió el problema. Lo cambié a init simple porque cell.accessoryView establece el marco de todos modos y esperaba que el uso de un init simple proporcionara una solución. –

+0

Incluso si no ayuda aquí, utilizaría el inicializador designado. (Lo cual ignora también parte del encuadre ...) –

+2

Anular el inicializador designado puede dar como resultado un objeto inicializado incorrectamente, lo que le ocasionará problemas. – Costique

2

Me enfrenté al mismo problema con iOS 5. Puede usar -initWithFrame para crear el interruptor y luego puede agregar el interruptor como una subvista de la celda contentView y (no una vista accesoria y no se olvide de contar las subvistas de contentView, de lo contrario podría agregar un nuevo uiswitch) con el método -addSubview:.

0

Tuve el mismo problema y lo resolví guardando todos mis UISwitches en una matriz.

Luego en mi viewDidAppear, recorro la matriz inhabilitándolas.

- (void)viewDidAppear:(BOOL)animated { 
    for (UISwitch *switchView in switchMArray) { 
     switchView.enabled = NO; 
    } 
} 
Cuestiones relacionadas