2011-07-28 5 views
7

¿Hay alguna manera de modificar el marco del botón "deslizar" [DELETE] que se usó en UITableViewCells? Actualmente está centrado verticalmente dentro de la celda, pero si es posible, me gustaría moverlo a la guía cian.UITableViewCell, Eliminar marco de botones?

enter image description here

Respuesta

15

Si usted está buscando una fuerza verdadera manera de resolver este problema, entonces usted debe subclase de UITableViewCell y anular los métodos de manipulación de todo el estado para el dibujo correcto su propio botón de eliminación (no llame a super en esos métodos). Pero hay otra manera fácil:

@implementation CustomCell 
- (void)layoutSubviews { 
     [super layoutSubviews]; 
     if (self.showingDeleteConfirmation) { 
      if ([self.subviews count] < 4) return; 
      UIView *delBtn = [self.subviews objectAtIndex:3]; 
      delBtn.frame = CGRectOffset(delBtn.frame, 0, 10); 
     } 
} 
@end 
+8

'[self.subviews objectAtIndex: 3]' está destinado a romperse tarde o temprano. Sobrescribir el manejo de estado y dibujar un botón de eliminación personalizado es una idea mucho mejor. –

+0

sí, si utilizamos una matriz, debemos verificar su límite cada vez antes de acceder a los elementos por índice. – UIBuilder

+0

Eso realmente resolvió mi problema. Pero tengo una pregunta. Cuando aparece el botón Eliminar, parece moverse de la posición original a la nueva posición que acabo de configurar, que parece extraña. ¿Cómo podemos hacer que el botón Eliminar aparezca en la misma posición donde hemos establecido el origen para él? – Nitish

-2

trate de cambiar el marco para accesorios Ver

+1

¿Se puede ampliar un poco? Estaba buscando usar didTransitionToState: en mi subclase UITableViewCell, pero no estoy teniendo suerte configurando el marco de accessView. – fuzzygoat

0

En lugar de didTransitionToState:,

Cómo sobre el uso del -(void)willTransitionToState: y establecer el marco de la editingAccessoryView?

- (void)willTransitionToState:(UITableViewCellStateMask)state 
{ 
    if (state == UITableViewCellEditingStyleDelete) 
    { 

     NSInteger num = 10; 

     UIView.frame = CGRectMake(UIView.frame.origin.x,UIView.frame.origin.y - num, 
     UIView.size.width,UIView.size.height); 
    } 
} 
Cuestiones relacionadas