Я создал пользовательскую ячейку UITableView, в которой есть 4-5 различных компонентов.Иногда я создаю UIViews из CGRectMake, а иногда, основываясь на некоторых вычислениях координат x, y, я размещаю некоторые UIImages.Все работает нормально, потому что cellForRowAtIndexPath каждый раз создает новую ячейку.Но когда я собираюсь повторно использовать ячейку на основе "dequeueReusableCellWithIdentifier", пользовательский интерфейс испортился.Предыдущие прямоугольники никогда не стирались, а позиционирование более ранних UIViews также ведет себя странно.Хотя клеточные индексы являются изменениями, они не отражают координацию нарисованных UIImages.
Создание UITableViewCell в каждой ячейкеForForowAtIndexPath прекрасно работает в 3GS и 4G, но очень раздражает и очень медленно в 3G.Я подозреваю, что это происходит из-за создания этого cellForRowAtIndexPath при каждом вызове.Так что любой может помочь мне определить эту проблему.
Это то, что я делаю сейчас.
CustomNoteCell *cell = nil;
if (cell == nil) {
cell = (CustomNoteCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomNoteCell" owner:nil options:nil];
for (id currentObject in topLevelObjects) {
if ([currentObject isKindOfClass:[UITableViewCell class]]) {
cell = (CustomNoteCell *) currentObject;
break;
}
}
}
//rest of the codes go here like
CGSize maximumLablelSize = CGSizeMake(296, 1000);
CGSize expectedLabelSize = [alue sizeWithFont:cell.customCellNoteText.font constrainedToSize:maximumLablelSize lineBreakMode:cell.customCellNoteText.lineBreakMode];
CGRect newFrame = cell.customCellNoteText.frame;
newFrame.size.height = expectedLabelSize.height;
cell.customCellNoteText.frame = newFrame;
cell.customCellNoteText.text = noteValue;
cell.uiViewContrlloer = self;
CGRect addressRect = cell.address.frame;
addressRect.origin.y = newFrame.origin.y + newFrame.size.height + 10;
cell.address.frame = addressRect;
Спасибо