prepareForReuse - PullRequest
       2

prepareForReuse

7 голосов
/ 02 марта 2011

Может кто-нибудь показать, пожалуйста, как использовать prepareForReuse? Я искал часы и читал документы для разработчиков.

В моей пользовательской ячейке, которая расширяет UITableViewCell, у меня есть метод prepareForReuse и его вызывание, но что мне с ним делать (возникают проблемы с рендерингом). Я делаю это дедлайн = @ "" для каждого ярлыка?

@implementation PostTableCustomCellController
@synthesize authorName;
@synthesize deadline;
@synthesize distance;
@synthesize interestedCount;
@synthesize description;
@synthesize avatar;
@synthesize viewForBackground;
@synthesize fetchedResultsController, managedObjectContext;

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) {
        // Initialization code
    }
    return self;
}


- (void)setSelected:(BOOL)selected animated:(BOOL)animated {

    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

- (void) prepareForReuse {
    NSLog(@"prep for reuse");
    [self clearFields];
}

- (void) clearFields {

    NSLog(@"clearFields was called Jason");


}


- (void)dealloc {
    [super dealloc];
}


@end

Ответы [ 3 ]

9 голосов
/ 02 марта 2011

После создания объекта вызов любого из методов init недопустим, поэтому должен быть какой-то способ вернуть объект в нейтральное состояние, прежде чем он будет снова использован.Вот для чего prepareForReuse.Вы используете этот метод, чтобы вернуть объект в то же состояние, в котором он находился сразу после вызова метода init, чтобы вызывающий код делал то же самое, независимо от того, был ли ему присвоен новый или повторно использованный объект.

1 голос
/ 26 мая 2013

В одном из моих приложений у меня есть постоянные экземпляры объектов, по одному на строку, которые знают об «своем» экземпляре UITableViewCell.(Когда строка видима, поэтому у нее фактически есть одна).

В этом случае prepareForReuse это просто возможность сообщить объекту строки, что его экземпляр UITableViewCell собирается быть передан другому объекту строки.т.е. исходная строка больше не имеет видимого присутствия в табличном представлении.

0 голосов
/ 05 июля 2013

(поздний ответ - но для тех, кто сталкивается с этим вопросом)

Если вы не хотите создавать подкласс UITableViewCell и переопределять метод -(void)prepareForReuse, вы можете использовать метод <UITableViewDelegate>:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    // prepare cell before it is displayed
}

Это позволит вам prepare ячейку до ее отображения.

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