UITableViewCell не вызывает initWithFrame - PullRequest
1 голос
/ 31 июля 2011

Я создал свой UITableViewCell программно (без xib), и вот как он у меня есть в моем коде:

- (id) initWithFrame: (CGRect)frame {
    self = [super initWithFrame: frame];
    if (self) {
        NSLog(@"CALLING INIT WITH FRAME");

        self.like_img = [[[UIImageView alloc] initWithFrame:CGRectMake(5, 75, 30, 30)] autorelease];
        [self.contentView addSubview: self.like_img];

        self.comment_img = [[[UIImageView alloc] initWithFrame:CGRectMake(5, 110, 30, 30)] autorelease];
        [self.contentView addSubview: self.comment_img];

        self.type_img = [[[UIImageView alloc] initWithFrame:CGRectMake(5, 40, 30, 30)] autorelease];
        [self.contentView addSubview:self.type_img];

        self.avatar = [[[UIImageView alloc] initWithFrame:CGRectMake(5, 5, 30, 30)] autorelease];
        [self.contentView addSubview:self.avatar];

        self.post = [[[UITextView alloc] initWithFrame:CGRectMake(40, 40, 650, 100)] autorelease];
        [self.contentView addSubview:self.post];

        self.post_title= [[[UILabel alloc] initWithFrame:CGRectMake(40, 20, 650, 50)] autorelease];
        [self.contentView addSubview:self.post_title];

        self.post_detail = [[[UILabel alloc] initWithFrame:CGRectMake(40, 10, 650, 20)] autorelease];
        [self.contentView addSubview:self.post_detail];

    }

    NSLog(@"NOT MY SELF");
    return self;
}


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

    FTPostCell *cell = (FTPostCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSLog(@"INITIALIZING CELL");
        cell = [[[FTPostCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
    }

  //snip some code here
  return cell;
}

Проблема в том, что я не вижу, что он вызывает вызываемый initWithFrame, почему это?И поэтому я вижу только пустые клетки ...

1 Ответ

7 голосов
/ 31 июля 2011

initWithFrame не вызывается, потому что вы звоните

initWithFrame: reuseIdentifier:

заменить

- (id) initWithFrame: (CGRect)frame {
    self = [super initWithFrame: frame];

с

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithFrame: frame reuseIdentifier:reuseIdentifier];

Также обратите внимание, что initWithFrame: reuseIdentifier является устаревшим методом, и вы должны использовать вместо него initWithStyle: reuseIdentifier.

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