'initWithFrame: reuseIdentifier' устарела - PullRequest
5 голосов
/ 10 июля 2011

Я пытался воссоздать проект XCode, но натолкнулся на ошибку «initWithFrame: reuseIdentifier устарел».Вот код:

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) {
    UIView *myContentView = self.contentView;

    self.todoPriorityImageView = [[UIImageView alloc] initWithImage:priority1Image];
    [myContentView addSubview:self.todoPriorityImageView];
    [self.todoPriorityImageView release];

    self.todoTextLabel = [self newLabelWithPrimaryColor:[UIColor blackColor] 
                                          selectedColor:[UIColor whiteColor] fontSize:14.0 bold:YES]; 
    self.todoTextLabel.textAlignment = UITextAlignmentLeft; // default
    [myContentView addSubview:self.todoTextLabel];
    [self.todoTextLabel release];

    self.todoPriorityLabel = [self newLabelWithPrimaryColor:[UIColor blackColor] 
                                              selectedColor:[UIColor whiteColor] fontSize:10.0 bold:YES];
    self.todoPriorityLabel.textAlignment = UITextAlignmentRight;
    [myContentView addSubview:self.todoPriorityLabel];
    [self.todoPriorityLabel release];

    // Position the todoPriorityImageView above all of the other views so
    // it's not obscured. It's a transparent image, so any views
    // that overlap it will still be visible.
    [myContentView bringSubviewToFront:self.todoPriorityImageView];
}return self;}

Я получаю сообщение об ошибке в строке 2 с началом оператора if.Эту функцию явно не рекомендуется использовать, и теперь она является следующей:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {

self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
    // Initialization code.
}
return self;}

Я действительно не знаю, как я могу изменить вышеуказанную функцию и поместить ее в новую функцию!Может ли кто-нибудь1 помочь мне в этом вопросе, пожалуйста?

Thx

Кевин

1 Ответ

5 голосов
/ 10 июля 2011

Новый инициализатор использует UITableViewCellStryle вместо указания кадра CGRect для ячейки, и вы просто передаете кадр суперклассу в [super initWithFrame:frame reuseIdentifier:reuseIdentifier].Таким образом, не должно быть проблем с тем, чтобы поместить все тот же код в новую версию без оператора if.

У вас было:

- (id)initWithFrame:(CGRect)frame reuseIdentifier:(NSString *)reuseIdentifier {
    if (self = [super initWithFrame:frame reuseIdentifier:reuseIdentifier]) {
        // all your stuff
    }
    return self;
}

Теперь у вас есть:

- (id)initWithStyle:(UITableViewCellStyle)style
    reuseIdentifier:(NSString *)reuseIdentifier {
    if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
        // all your stuff
    }
    return self;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...