NewCell というカスタム セルを持つ UITableView があり、クリック イベントで NewCell 内に「selectedView」という UIView を表示しようとしています。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NewCell *cell = (NewCell*)[tableView cellForRowAtIndexPath:indexPath];
[cell.selectedView setHidden:NO];
}
編集 - セル作成コードの追加:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"NewCell";
NewCell *productCell = (NewCell *)[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (productCell == nil)
{
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"NewCell" owner:nil options:nil];
for (id currentObject in topLevelObjects)
{
if([currentObject isKindOfClass:[UITableViewCell class]])
{
productCell = (NewCell *) currentObject;
break;
}
}
}
Product *mainProduct = [self.productsArray objectAtIndex:indexPath.row];
float floatPrice = [mainProduct.price floatValue];
NSString *priceFormat;
if ((int)floatPrice == floatPrice) priceFormat = @"$%.0f"; else priceFormat = @"$%.2f";
produtCell.productPrice.text = [NSString stringWithFormat:priceFormat, floatPrice];
return productCell;
}
すべてが正常に機能し、テーブルにデータが入力されますが、セルを選択すると、テーブルで選択されたセルに selectedView が表示されず、反対のセルに selectedView が表示されます。つまり、画面に行 0 と行 1 が表示されているときに行 1 を選択すると、行 0 に selectedView が表示され、行 0 を選択すると、行 1 に selectedView が表示されます。
非常に奇妙です。なぜこれを行っているのかわかりません。
私は何か間違ったことをしているに違いない。