Проблема создания пользовательского UITableViewCell для сгруппированной таблицы стилей - PullRequest
0 голосов
/ 23 декабря 2011

Я пытаюсь создать пользовательскую ячейку для использования в сгруппированном стиле UITableView. Однако, когда я запускаю свой код, я продолжаю выдавать ошибку в точке, отмеченной в моем коде. Я понятия не имею, что не так, хотя. Пожалуйста, кто-нибудь может мне помочь?

.h файл:

@interface CustomRecommendedStepCell : UITableViewCell
{
    UILabel *stepNumber;
    UITextView *stepInstruction;
}


@property(nonatomic, retain)IBOutlet UILabel *stepNumber;
@property(nonatomic, retain)IBOutlet UITextView *stepInstruction;


@end

.m файл:

#import "CustomRecommendedStepCell.h"

@implementation CustomRecommendedStepCell
@synthesize stepNumber, stepInstruction;

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

    if (self)
    {
        UIImageView *backgroundView = [[UIImageView alloc] init];
        [backgroundView setImage:[UIImage imageNamed:@"Slate_bg.png"]];
        self.backgroundView = backgroundView;
        self.backgroundColor = [UIColor clearColor];

        stepNumber = [[UILabel alloc] init];
        stepNumber.textAlignment = UITextAlignmentLeft;
        stepNumber.font = [UIFont fontWithName:kCustomFont1 size:40];
        stepNumber.textColor =[UIColor whiteColor];
        stepNumber.backgroundColor = [UIColor clearColor];

        stepInstruction = [[UITextView alloc] init];
        stepInstruction.editable = NO;
        stepInstruction.textAlignment = UITextAlignmentLeft;
        stepInstruction.font = [UIFont fontWithName:kCustomFont1 size:23];
        stepInstruction.textColor =[UIColor whiteColor];
        stepInstruction.backgroundColor = [UIColor clearColor];

        [self.contentView addSubview:stepNumber];
        [self.contentView addSubview:stepInstruction];
    }

    return self;
}


- (void)layoutSubviews
{
    [super layoutSubviews];

    stepNumber.frame = CGRectMake(20, 20, 50, 60);        // PROBLEM OCCURS HERE!
    stepInstruction.frame = CGRectMake(70, 20, 200, 60);
}


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

    // Configure the view for the selected state
}

@end

Вот копия сообщений журнала, которые я получаю:

2011-12-22 20:34:09.801 Some App[30945:10703] -[__NSCFString setFrame:]: unrecognized selector sent to instance 0x756b340
2011-12-22 20:34:09.802 Some App[30945:10703] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString setFrame:]: unrecognized selector sent to instance 0x756b340'
*** First throw call stack:
(0x11f052 0x1845d0a 0x120ced 0x85f00 0x85ce2 0xd7c1 0x778322 0x120e72 0x359792d 0x35a1827 0x35a1922 0x771f47 0x924edd 0x7d2fe1 0x7d3589 0x7bedfd 0x7cd851 0x778301 0x120e72 0x359792d 0x35a1827 0x3527fa7 0x3529ea6 0x3529580 0xf39ce 0x8a670 0x564f6 0x55db4 0x55ccb 0x3ab4879 0x3ab493e 0x739a9b 0x2128 0x2085 0x1)
terminate called throwing an exception

Ответы [ 3 ]

2 голосов
/ 23 декабря 2011

В вашем tableView:cellForRowAtIndexPath: методе вы, кажется, делаете что-то вроде

cell.stepNumber = @"text";

вместо

cell.stepNumber.text = @"text";
1 голос
/ 23 декабря 2011

Я не думаю, что проблема в этом коде ... проверьте ваш tableView:cellForRowAtIndexPath: метод, как предложил Евгений.Я думаю, что вы могли бы вернуть NSString вместо UITableViewCell?

0 голосов
/ 23 декабря 2011

Похоже, что к моменту вызова layoutSubviews ваша метка stepNumber уже выпущена (или никогда не выделяется).

Я думаю, вам нужно посмотреть, как высоздание вашей пользовательской ячейки.Вы уверены, что ваш initWithStyle: метод вызывается?

Можете ли вы опубликовать свой cellForRowAtIndexPath: метод вашего контроллера представления?

...