我有UITableView
数据量很大。我每次创建UITableViewCell
就像:
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:strCellIdentifier];
之后我将UIView
作为子视图添加到UITableViewCell
,例如
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(onDocumentLogoTapped:) forControlEvents:UIControlEventTouchUpInside];
button.frame = imageRect;
button.tag = indexPath.row;
[cell addSubview:button];
同样我也添加了UIImageView
。问题是我的UITableView
变得非常慢,并且由于内存问题,应用程序有时会崩溃。
在向其添加subView时,有人可以建议我使用UITableViewCell
的正确方法吗?
答案 0 :(得分:4)
在cellForRowAtIndexPath
方法中使用此功能:
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
答案 1 :(得分:1)
如下所示:
在添加子视图之前,请先删除以前的子视图
for(UIView *sv in [cell.contentView subViews])
{
[sv removefromsuperview];
}
[cell.contentView addSubview:button];
希望这个帮助!
答案 2 :(得分:0)
我认为如果你去自定义单元格然后你可以使用这个方法
会更好 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
NSArray *nib;
static NSString *cellIdentifier= @"cell";
UITableViewCell *theCell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(theCell== nil)
{
{
nib = [[NSBundle mainBundle] loadNibNamed:@"<your custom cell xib name>" owner:self options:nil];
}
theCell = [nib objectAtIndex:0];
theCell.selectionStyle = UITableViewCellSelectionStyleBlue;
}
UIImageView *imageView=(UIImageView*)[[theCell contentView] viewWithTag:101];
//assuming it has a image view with tag 101 you can use any thing
}