невозможно изменить цвет фона UITableViewCell - PullRequest
5 голосов
/ 02 февраля 2012

У меня есть UITableViewCell, который подходит для UITableView, но почему-то я не могу изменить цвет фона при входе в режим редактирования стиля ... Я пробовал все в Интернете, поиск весь день, но все еще не мог Я не могу исправить это (я также искал StackOverflow). пожалуйста, помогите мне.

- (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;
            }
        }
    }

Ответы [ 9 ]

18 голосов
/ 03 февраля 2012

Попробуйте настроить ячейку внутри tableView: willDisplayCell: метода, примерно так:

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

    cell.backgroundColor = [UIColor redColor];

}
5 голосов
/ 10 октября 2012

Вам нужно изменить viewView ячейки tableView, а не фоновое представление ячейки.

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

    cell.contentView.backgroundColor = [UIColor redColor];
}
2 голосов
/ 03 февраля 2012

чтобы иметь полный контроль над настройкой ваших ячеек, я предпочитаю лучше переопределить вид ячеек,

создайте новый класс для вашего представления ячейки, который вызывается UITableView,

позже, когда я доберусь до своего рабочего компьютера, если вы не нашли свой ответ, я опубликую пример кода,

как только вы увидите, как это работает, довольно просто

Вы также можете поместить изображение для фона своей ячейки и разместить различные метки и изображения, кнопки, текстовые поля в пользовательских местах вашей ячейки,

EDIT >>

код! [излишне просто менять фон, но если вы действительно хотите настроить свою ячейку, это путь!]

в вашем 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 

в вашем 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

А в вашем 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;

   }

НАСЛАЖДАЙТЕСЬ !! ;)

0 голосов
/ 12 октября 2017

в Swift 3 вы можете использовать

cell.backgroundcolor = UIColor.white
0 голосов
/ 12 октября 2017
 cell.backgroundColor = [UIColor redColor];
0 голосов
/ 04 мая 2017

Убедитесь, что вы еще не установили цвет фона представления содержимого в раскадровке.Если вы это сделаете, изменение cell.backgroundColor в коде не будет иметь никакого значения, и вы будете в замешательстве (как я).

0 голосов
/ 21 сентября 2014

Как упомянул @Westley;

Вам нужно изменить viewView ячейки tableView, а не фоновое представление ячейки.

Вот как это следует сделать:

    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];
    }

Надеюсь, это поможет вам, ребята

0 голосов
/ 09 апреля 2012

Пожалуйста, попробуйте это, у меня это работает.

UIView *bgView = [[UIView alloc] initWithFrame:cell.frame];
bgView.backgroundColor = [UIColor greenColor];
cell.backgroundView = bgView;
[bgView release];
0 голосов
/ 02 февраля 2012

попробуйте установить свойство backgroundColor для клеток, сработало у меня cell.backgroundColor=[UIColor blueColor];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...