Я создал пользовательский UITableViewCell
, где я добавляю кучу кнопок, загружаемых динамически к его contentView
. Они отображаются правильно.
Когда данные, которые управляют тем, какие кнопки загружены, меняются, и я звоню reloadData
, я вижу, что prepareForReuse
называется:
- (void) prepareForReuse {
NSLog(@"prep for reuse");
[self clearButtons];
}
- (void) clearButtons {
NSLog(@"clearButtons called");
self.buttons;
for (UIView* v in buttons) {
NSLog(@"clearing a button.");
[v removeFromSuperview];
[v dealloc];
}
buttons = [[NSMutableArray alloc] init];
}
Кнопки не удаляются из суперпредставления, хотя "очистка кнопки". сообщение никогда не регистрируется.
Затем я добавил явный вызов к clearButtons
в tableView:cellForRowAtIndexPath
:
CustomCell *cell = (CustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[CustomCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
[cell clearButtons];
И на этот раз я вижу, что «очистка кнопки». зарегистрировано и все отображается правильно.
Что дает? Почему кнопки не удаляются при вызове из prepareForReuse?