2012-02-02 32 views
5

ho UITableViewCell che si inserisce su UITableView, ma in qualche modo non posso cambiare il colore di sfondo quando si entra in modalità di modifica stile .. Ho provato tutto sul web, la ricerca per tutto il giorno, ma ancora non è stato possibile ripararlo (ho cercato StackOverflow così). mi aiuti per favore.non può cambiare il colore di sfondo UITableViewCell

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

    MainTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 

     NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"MainTableViewCell" owner:nil options:nil]; 

     for (UIView *view in views) { 
      if([view isKindOfClass:[UITableViewCell class]]) 
      { 
       cell = (MainTableViewCell *)view; 
      } 
     } 
    } 

risposta

18

Prova la personalizzazione del cellulare all'interno tableView: willDisplayCell: metodo, qualcosa di simile:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 

    cell.backgroundColor = [UIColor redColor]; 

} 
+0

funziona perfettamente l'uomo! Grazie! :) –

+0

felice di poterti aiutare –

0

impostando le cellule provare proprietà backgroundColor, lavorato per me cell.backgroundColor=[UIColor blueColor];

+0

il suo uomo non lavora .. forse si dispone di un'altra soluzione? –

+0

@YossiTsafar scusa, controlla la mia modifica – Daniel

2

di avere il controllo totale sulla personalizzazione delle vostre cellule, preferisco meglio per ignorare la vista di cella,

creare una nuova classe per la tua vista cella, che viene chiamata da UITableView,

più tardi quando arrivo al mio computer di lavoro se non hai trovato la tua risposta inserirò qualche codice di esempio,

una volta si vede come funziona è abbastanza facile

si potrebbe pure inserire un'immagine per lo sfondo delle cellule, e inserire diverse etichette e le immagini, pulsanti, campi di testo in luoghi personalizzate del tuo cellulare,

EDIT >>

il codice! [È eccessivo solo per cambiare lo sfondo, ma se si desidera personalizzare veramente il tuo cellulare, questo è il modo di andare!]

nel vostro CustomCell.h

#import <UIKit/UIKit.h> 
@interface CustomCell : UITableViewCell { 
UILabel *_kLabel; 
UILabel *_dLabel; 
} 
@property (nonatomic, retain) UILabel *kLabel; 
@property (nonatomic, retain) UILabel *dLabel; 
- (void) initLabels; 
@end 

nel vostro CustomCell.m

#import "CustomCell.h" 
@implementation CustomCell 
@synthesize kLabel = _kLabel; 
@synthesize dLabel = _dLabel; 

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

    CGRect popUpImageBgndRect = CGRectMake(0, 0, 942, 44); 
    UIImageView *popUpImageBgnd = [[UIImageView alloc] initWithFrame:popUpImageBgndRect]; 
    [popUpImageBgnd setImage:[UIImage imageNamed:@"tableCellBgnd.png"]]; 
    popUpImageBgnd.opaque = YES; // explicitly opaque for performance 
    [self.contentView addSubview:popUpImageBgnd]; 
    [popUpImageBgnd release]; 

    [self initLabels]; 
    } 
    return self; 
    } 

    - (void)layoutSubviews { 

[super layoutSubviews]; 

CGRect contentRect = self.contentView.bounds; 

CGFloat boundsX = contentRect.origin.x; 

CGRect frame; 


frame= CGRectMake(boundsX+10 ,10, 200, 20); 

self.kLabel.frame = frame; 


frame= CGRectMake(boundsX+98 ,10, 100, 20); 

self.dLabel.frame = frame; 

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

// Configure the view for the selected state 
} 

    - (void) initLabels { 
self.kLabel = [[[UILabel alloc]init] autorelease]; 
self.kLabel.textAlignment = UITextAlignmentLeft; 
self.kLabel.backgroundColor = [UIColor clearColor]; 
self.kLabel.font = [UIFont fontWithName:@"FS Albert" size:16]; 
self.kLabel.textColor = [UIColor colorWithRed:51.0f/255.0f green:51.0f/255.0f blue:51.0f/255.0f alpha:1]; 

self.dLabel = [[[UILabel alloc]init] autorelease]; 
self.dLabel.textAlignment = UITextAlignmentLeft; 
self.dLabel.backgroundColor = [UIColor clearColor]; 
self.dLabel.font = [UIFont systemFontOfSize:16]; 
self.dLabel.textColor = [UIColor colorWithRed:51.0f/255.0f green:51.0f/255.0f blue:51.0f/255.0f alpha:1]; 

[self.contentView addSubview:self.kLabel]; 
[self.contentView addSubview:self.dLabel]; 

} 

-(void) dealloc { 

[_kLabel release]; 
[_dLabel release]; 

[super dealloc]; 
} 

    @end 

E nel tuo ViewController.m

YourViewController.m 

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

static NSString *CellIdentifier = @"Cell"; 



CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 

    cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 

    } 


    return cell; 

    } 

divertitevi !! ;)

+0

ok amico, grazie! –

+0

@YossiTsafar controlla edit !, con image.png come sfondo, penso sia più flessibile, – MaKo

+0

Grazie mille amico !!! :) –

0

Si prega di provare questo, funziona per me.

UIView *bgView = [[UIView alloc] initWithFrame:cell.frame]; 
bgView.backgroundColor = [UIColor greenColor]; 
cell.backgroundView = bgView; 
[bgView release]; 
4

È necessario modificare il contenuto della cella della tabellaViewView, non la vista in background della cella.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 

    cell.contentView.backgroundColor = [UIColor redColor]; 
} 
0

Come @Westley menzionato;

È necessario modificare il contenuto della cella della tabellaViewView, non la vista in background della cella.

Questo è come si dovrebbe fare:

if(index == conditionYouWant) 
    { 
     cell.contentView.backgroundColor = [UIColor whiteColor]; 
    } 
    else 
    { 
     cell.contentView.backgroundColor = [UIColor colorWithRed:0.925 green:0.933 blue:0.937 alpha:1.0]; 
    } 

Speranza che aiuta voi ragazzi fuori

0

Essere sicuro che non hai già impostato il colore di sfondo della vista contenuti nella Storyboard. Se l'hai fatto, cambiando la cella.backgroundColor in codice non farà alcuna differenza, e tu andrai in giro per la confusione (come ho fatto io).

0
cell.backgroundColor = [UIColor redColor]; 
0

a Swift 3 è possibile utilizzare

cell.backgroundcolor = UIColor.white 
Problemi correlati