2011-12-04 17 views
8

Realicé un UITableViewCell personalizado en Interface Builder (Storyboard) y lo importé a mi proyecto a través del #import CustomTableViewCell.h.Personalizado UITableViewCell (IB) solo se muestra en el estado seleccionado

Todo funciona bien, pero la celda solo se carga en estado seleccionado.

enter image description here

Quiero la célula se va a cargar en cada fila por init.

P.S. Las conexiones del control deslizante y el campo de texto funcionan bien. También hice todas las conexiones IB.

CustomTableViewCell.m

#import "CustomTableViewCell.h" 

@implementation CustomTableViewCell 

@synthesize sliderLabel, slider; 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
if (self) { 
    // Initialization code 
} 
return self; 
} 

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
{ 
[super setSelected:selected animated:animated]; 

// Configure the view for the selected state 

} 

- (IBAction)getSliderValuesWithValue:(UISlider *)sender 
{ 
sliderLabel.text = [NSString stringWithFormat:@"%i/100", (int) roundf(sender.value)]; 
} 

@end 

Further Code

- (CustomTableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Kriterium"; 

CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
} 

// Configure the cell... 

cell.textLabel.text = [NSString stringWithFormat:@"%@", [listOfItems objectAtIndex:indexPath.row]]; 

return cell; 
} 

P. S. Si agrego algunos botones, etc. programáticamente en el método anterior, funciona. Pero quiero diseñar las filas en IB. Tiene que haber una solución.

+0

¿Se puede publicar el código de su método cellForRowAtIndexPath utilizado al rellenar UITableView con filas? – reddersky

+0

Actualicé mi respuesta. – DAS

+0

¿Ha diseñado esta celda en una punta separada o como un prototipo dentro de la vista de tabla en el guión gráfico? – jrturton

Respuesta

16

bien ... cosas extrañas que suceden aquí ... ;-) El problema era esta línea:

cell.textLabel.text = [NSString stringWithFormat:@"%@", [listOfItems objectAtIndex:indexPath.row]]; 

Dejando a cabo resolvieron el problema. Tuve que agregar otro UILabel a mi CustomCell que llené con el texto.

CONCLUSIÓN

Llenar el estándar UITableViewCell.textLabel.text parece sobrescribir los PrototypeCells.

... demasiada personalización duele. ;-)

¡Gracias de todos modos! :)

+0

¿Quiere decir en mi solución o en general? Gracias de nuevo por ti jr! – DAS

+0

En general, me refiero a que si usa el estilo de celda predeterminado y luego le agrega subvistas, esto es probablemente algo que debe tener en cuenta. – jrturton

+0

Bien, gracias. Es solo porque necesitaba un montón de diferentes estilos de celda. Es más fácil para mí visualizarlos en IB. :) – DAS

0

Te sugiero que no vayas por IB. Basta con definir los controles como la propiedad y en su método- initWithStyle (archivo CustomTableViewCell.m) init inicializar UISlider con su propiedad predeterminada:

UISlider *tempSlider = [[UISlider alloc] initWithFrame:frame]; 
tempSlider.selected = NO; 
//define other properties as well 
self.slider = tempSlider; 
[self addSubview:self.slider]; 
[tempSlider release]; 

además también se puede establecer el estilo de selección de celda a ninguno.

cell.selectionStyle = UITableViewCellSelectionStyleNone; 
+0

Gracias. Pero básicamente tiene que funcionar como [this (click)] (http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1).Todo el mundo usa esta línea que no cambia nada en mi problema: 'UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: @" PlayerCell "];' – DAS

Cuestiones relacionadas