我对此失去了理智:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *MyIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
UILabel *label;
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
label=[[UILabel alloc]initWithFrame:CGRectMake(20, 20, 200, 30)];
[cell addSubview:label];
[label setText:[NSString stringWithFormat: @"%d",indexPath.row]];
}
return cell;
}
在单元格的标签中,我看到这个数字而不是我期待的进展(0,1,2,3,4 ......):
0 1 2 0 4 1 2 0 4 1
任何想法错误在哪里?似乎我无法理解这一点。
修改 在将单元格== nil {}块后的标签初始化后解决。(不知道为什么我把它放在那里。)
答案 0 :(得分:2)
您需要执行if
的 的单元格配置:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(20, 20, 200, 30)];
[cell addSubview:label];
[label release];
}
[label setText:[NSString stringWithFormat: @"%d",indexPath.row]];
哦 - 你应该在添加标签后释放它以避免内存泄漏:)
答案 1 :(得分:0)
试试这个
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * MyIdentifier = @“Cell”;
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
UILabel *标签;
if(cell == nil)
{
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
}
label = [[UILabel alloc] initWithFrame:CGRectMake(20,20,200,30)];
[cell addSubview:label];
[label setText:[NSString stringWithFormat:@“%d”,indexPath.row]];
[标签发布];
返回单元格;