3

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 が表示されます。

非常に奇妙です。なぜこれを行っているのかわかりません。

私は何か間違ったことをしているに違いない。

4

1 に答える 1

5

これを行う理由は、選択スタイルを次のようになしに設定する必要があるためです。

productCell.selectionStyle = UITableViewCellSelectionStyleNone;
于 2012-07-11T19:11:43.360 に答える