Ahsan
Ahsan

Reputation: 2982

issue with using multiple cell types in uitableview

I am using this code for multiple cell types in a UITableView

The problem is that the cell text is invisible. The code for cellForRowAtIndexPath as well as the cell class code is given below:

code:

static NSString *kCellIdentifier = @"NewsViewControllerTableCell";
static NSString *kCellIdentifier2 = @"SubscribeCell";


if ((indexPath.row==0) && ([[NSUserDefaults standardUserDefaults] boolForKey:@"subscribeButtonOption"]))
{
   SubscribeCell* cell = (SubscribeCell*)[tableView dequeueReusableCellWithIdentifier:kCellIdentifier2];

    if (cell == nil) {
        cell = [[[SubscribeCell alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 35.0) reuseIdentifier:kCellIdentifier2] autorelease];
        cell.contentView.backgroundColor = kColorR53G53B53;
        cell.subscribeLabel.font = kLucidaSansStdFontBold_14;
        cell.subscribeLabel.textColor = [UIColor whiteColor];
    }

    cell.subscribeLabel.textColor=[UIColor redColor];
   cell.subscribeLabel.text = @"+ SUBSCRIBE TO NEWSLETTER";


   cell.selectedBackgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
   cell.selectedBackgroundView.backgroundColor =kColorR53G53B53;


   [cell setNeedsDisplay];
    return cell;           
}

else
{
   //another cell
 }

=========

header:

#import <UIKit/UIKit.h>

@interface SubscribeCell : UITableViewCell{
    UILabel *subscribeLabel;
}

@property(nonatomic, retain) UILabel *subscribeLabel;

 @end

and implementation class:

#import "SubscribeCell.h"

@implementation SubscribeCell
@synthesize subscribeLabel;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization

        subscribeLabel=[[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 323.0, 40.0)];
        subscribeLabel.textColor=[UIColor whiteColor];
        self.backgroundColor=kColorR53G53B53;

    }
    return self;
}

Upvotes: 0

Views: 167

Answers (2)

Daan van Hasselt
Daan van Hasselt

Reputation: 280

If I try to compile your code, I get an error message stating that UITableViewCell does not declare a method called 'initWithNibName: bundle:'. You should use the proper initialization method 'initWithStyle: reuseIdentifier:'. You also forget to add the subscribeLabel to the contentView of the cell.

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        subscribeLabel=[[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 323.0, 40.0)];
        subscribeLabel.textColor=[UIColor whiteColor];
        [self.contentView addSubview:subscribeLabel];
        self.backgroundColor=kColorR53G53B53;
    }
    return self;
}

Upvotes: 1

Andy Riordan
Andy Riordan

Reputation: 1154

Check to see if subscribeLabel is nil. You're creating it in initWithNibName:bundle: but are initializing with initWithFrame:reuseIdentifier:, so it's not reaching your label creation code.

Upvotes: 2

Related Questions