行数を入力する必要があります。私が使うとき
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
この行は、いくつかの行にスクロールした後、同じ位置に行を再描画します。以下の画面を参照してください。
セルをゼロにすると、
UITableViewCell *cell = nil;
その後は正常に動作しますが、予想外に多くのメモリが必要になります。今私の質問は、なぜそれが起こっているのかということです。
セルをゼロにすることと同じ位置で再描画することの関係は何ですか?
これは私のコードです:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
UIButton *questionButton=[UIButton buttonWithType:UIButtonTypeCustom];
questionButton.backgroundColor=[UIColor clearColor];
questionButton.tag=indexPath.row+1;
[questionButton setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
UIImageView *statusImageView=[[UIImageView alloc]initWithFrame:CGRectMake(190,25,23,23)];
NSString *statusImageName=[[NSString alloc]init];
statusImageName=@"Right";
[statusImageView setImage:[UIImage imageNamed:statusImageName]];
[questionButton addSubview:statusImageView];
if(indexPath.row%2==0)
{
[questionButton setBackgroundImage:[UIImage imageNamed:@"TopicsbarLeft"] forState:UIControlStateNormal];
[questionButton setBackgroundImage:[UIImage imageNamed:@"TopicsbarLetSelected"] forState:UIControlStateHighlighted];
CGRect topicButtonFrame=CGRectMake(0, 10, 250, 70);
questionButton.frame=topicButtonFrame;
NSLog(@"Even Rows =%d",indexPath.row);
NSString *questionLabel=[NSString stringWithFormat:@" Question %d :",indexPath.row+1];
[questionButton setTitle:questionLabel forState:UIControlStateNormal];
//questionButton.titleLabel.textAlignment=NSTextAlignmentLeft;
[questionButton.titleLabel setTextAlignment:UITextAlignmentLeft];
}
else
{
[questionButton setBackgroundImage:[UIImage imageNamed:@"TopicsbarRight"] forState:UIControlStateNormal];
[questionButton setBackgroundImage:[UIImage imageNamed:@"TopicsbarRightSelected"] forState:UIControlStateHighlighted];
CGRect topicButtonFrame=CGRectMake(100, 10, 250, 70);
questionButton.frame=topicButtonFrame;
NSString *questionLabel=[NSString stringWithFormat:@" Question %d :",indexPath.row+1];
[questionButton setTitle:questionLabel forState:UIControlStateNormal];
questionButton.titleLabel.textAlignment=UITextAlignmentRight;
[cell addSubview:questionButton];
}
[cell addSubview:questionButton];
cell.selectionStyle=UITableViewCellSelectionStyleNone;
return cell;
}