UITableViewCell
Interface Builder で を作成し、そのサブクラスを作成しました。その中にラッフルの結果をラベルで表示する必要があります。取得する結果の数がわからないため、IB でラベルを作成できないため、内部で作成していcellForRowAtIndexPath
ます。セルが再利用されたときにサブビューの上にサブビューを作成し続けているので、今何が起こっているのでしょうか。
Cell サブクラスの Interface Builder \ でラベルを作成することを考えましたawakeFromNib
が、タグを使用してラベルを埋めましたが、ラベルがいくつになるかわかりません。
それを解決する良い方法は何ですか?
画面領域の外に出たら、セルのコンテンツを削除する方法はありますか?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//Where we configure the cell in each row
id currentRaffle = [_winnings objectAtIndex:indexPath.row];
RaffleResultCell *cell = [tableView dequeueReusableCellWithIdentifier:@"raffleResCell"];
if (cell == nil) {
cell = [[RaffleResultCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"raffleResCell"];
}
cell.prizeTitle.text = [currentRaffle valueForKey:@"title"];
NSArray *winningNumbers = [[currentRaffle valueForKey:@"winningNumbers"] componentsSeparatedByString:@","];
cell.numbOfRowsPerCell = 1+ [winningNumbers count]/4;
int row =0;
int col=0;
for (int i=0;i<[winningNumbers count];i++)
{
UILabel *temp =[[UILabel alloc]initWithFrame:CGRectMake(70*row, 30*col, 70, 20)];
temp.textAlignment = UITextAlignmentCenter;
temp.font=[temp.font fontWithSize:14];
temp.text = [NSString stringWithFormat:@"%@ ",[winningNumbers objectAtIndex:i]];
[cell.winningNumbersView addSubview:temp];
if(row<3)
[cell.winningNumbersView addSubview:line];
row++;
if(row >3)
{
row=0;
col++;
}
}
return cell;
}