我创建了一个自定义的UITableView单元,它有4-5个不同的组件。有时候我会用CGRectMake创建UIViews,有时基于x,y坐标计算,我会定位一些UIImages。每次创建新单元格时,Everthing都可以正常运行cellForRowAtIndexPath。但是当我要基于“dequeueReusableCellWithIdentifier”重用单元格时,UI会搞砸。之前的矩形制作永远不会被删除,而早期UIViews的定位也表现得很奇怪。虽然单元格索引是变化的,但它并不反映绘制的UIImages的协调性。
在每个cellForRowAtIndexPath中创建UITableViewCell在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;
谢谢
答案 0 :(得分:1)
我认为你将出列的小区电话放在错误的地方。你应该把它放在if (cell == nil)
之前。
答案 1 :(得分:0)
正如提到的那样,你的细胞总是零。你应该先尝试出发。
CustomNoteCell *cell = (CustomNoteCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (! cell) {
cell = [[[CustomNoteCell alloc] initWithReuseIdentifier:CellIdentifier] autorelease];
...