2011-12-04 17 views
8

Ho creato un oggetto personalizzato UITableViewCell in Interface Builder (Storyboard) e l'ho importato nel mio progetto tramite #import CustomTableViewCell.h.Personalizzato UITableViewCell (IB) mostra solo nello stato selezionato

Tutto funziona correttamente, ma la cella viene caricata solo nello stato selezionato.

enter image description here

voglio la cella da caricare in ogni riga da init.

P.S. Le connessioni del campo di scorrimento e di testo funzionano correttamente. Ho anche realizzato tutte le connessioni 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. Se aggiungo alcuni pulsanti ecc. Programmaticamente nel metodo sopra, funziona. Ma voglio progettare le righe in IB. Ci deve essere una soluzione.

+0

È possibile inserire il codice per il metodo cellForRowAtIndexPath utilizzato quando si popola UITableView con le righe? – reddersky

+0

Ho aggiornato la mia risposta. – DAS

+0

Hai progettato questa cella in un pennino separato o come prototipo nella visualizzazione tabella nello storyboard? – jrturton

risposta

16

va bene ... strane cose che accadono qui ... ;-) Il problema era questa linea:

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

Lasciando fuori ha fatto il trucco. Ho dovuto aggiungere un altro UILabel al mio CustomCell che riempio con il testo.

CONCLUSIONE

Riempire lo standard UITableViewCell.textLabel.text sembra sovrascrivere i PrototypeCells.

... troppa personalizzazione fa male. ;-)

Grazie comunque! :)

+0

Intendi nella mia soluzione o in generale? Grazie ancora a te jr! – DAS

+0

Intendo generalmente - se si utilizza lo stile di cella predefinito, quindi si aggiungono subviews ad esso, questo è probabilmente qualcosa da cercare. – jrturton

+0

Ok, grazie. È solo perché avevo bisogno di un sacco di diversi stili di cella. È più facile per me visualizzarli in IB. :) – DAS

0

Suggerisco di non andare per IB. Basta definire quei controlli come proprietà e nella vostra init metodo-initWithStyle (file CustomTableViewCell.m) inizializzare UISlider con la proprietà di default:

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

Inoltre è anche possibile impostare lo stile selezione delle celle a nessuno.

cell.selectionStyle = UITableViewCellSelectionStyleNone; 
+0

Grazie. Ma in pratica deve funzionare come [questo (clic)] (http://www.raywenderlich.com/5138/beginning-storyboards-in-ios-5-part-1).Tutti usano questa linea che non modifica nulla sul mio problema: 'UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: @" PlayerCell "];' – DAS

Problemi correlati