2010-01-27 11 views

Respuesta

19

Esto es probablemente un error en IB como se ve en la documentación que la vista de tabla no tiene ninguna propiedad para la selección de espectáculos en contacto. Es la propiedad de la celda de vista de tabla en lugar de. Por lo tanto, la casilla de verificación no debería estar presente en el IB. Probablemente puedas presentar un error con la manzana y ver qué dicen al respecto.

Para conseguir el efecto que debe hacerlo como:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

      cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
      if (cell == nil) { 
       cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier2]; 
       [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 
      } 
    } 

Espero que esto ayude.

0

Yo también siento que es muy probable que sea un error. Sin embargo, me topé con una solución perfecta basada en las siguientes observaciones.

  • The cell is highlighted on touch down and selected on touch up.
  • Ambos -setHighlighted:animated: y -setSelected:animated: resaltan la celda de acuerdo con su estilo de selección, es decir, al encender cualquiera de ellos mientras el otro está apagado, se resalta la celda.
  • La celda nace con highlighted apagada (normalmente, de lo contrario, la solución a continuación solo necesita un ajuste apropiado que es fácil de entender en función de su situación específica).

Dado lo anterior, simplemente subclase UITableViewCell y anular setHighlighted:animated: sin llamar super 's aplicación. Por lo tanto, todos los esfuerzos para activar highlighted se suprimirán y el resaltado se realizará solo al tocar y no al tocar hacia abajo, que es exactamente lo que se espera al desactivar 'Mostrar selección al tocar'.

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated 
{ 
    // hack to get the effect of unchecking "Show Selection on Touch" option of UITableView in IB which has no effect 
} 

En retoque, la célula es selected pero no es animated. Si quieres la animación, descubrí que llamar a un método delegado como se muestra a continuación anima la selección.

- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [_itemsTable selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; 
    return indexPath; 
} 
Cuestiones relacionadas