0

カスタム UITableViewCell があります。のUIImageView上に がありUIButtonます。をクリックすると、ラジオ ボタンUIButtonのようなもののイメージを切り替えることができます。UIImageView

問題は、状態を「YES」に切り替えると、必要な変更を行うサーバーへの呼び出しがあることです。テーブルをリロードしUIImageViewても、「YES」状態に変わりません。UIButton状態を「選択済み」に設定しましたが、正常に機能しています。しかし、UIImageView新しいイメージには変わりません。

更新時に私はこれを取得します: ここに画像の説明を入力

私が実際にこれをしたいとき:ここに画像の説明を入力

デフォルトの状態は次のとおりです。ここに画像の説明を入力

の更新された状態とデフォルトの状態はUIImageView同じです。

ここで丸いアイコンはUIImageViewで、残りはUIButton

これは私がやろうとしてきたことです:

カスタムではUITableViewCell

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    self.karmaLogo = [[UIImageView alloc] initWithFrame:CGRectMake(self.karmaButton.frame.size.width - 40, 8, 30, 30)];
    [self.karmaLogo setImage:[UIImage imageNamed:@"logo-grey"]];
    self.karmaLogo.userInteractionEnabled = NO;
    [self.karmaButton addSubview:self.karmaLogo];
}

そしてUITableViewデリゲートで:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    // Creates the required custom cell
    if (karmaCheck == 1) // Received from the server
    {
        cell.karmaButton.highlighted = YES;
        cell.karmaButton.selected = YES;
        cell.karmaLogo.image = nil;
        [cell.karmaLogo setImage:[UIImage imageNamed:@"logo-black"]];
        [cell.karmaLogo setNeedsDisplay];
        [cell bringSubviewToFront:cell.karmaLogo];
    }
    else
    {
        cell.karmaButton.highlighted = NO;
        cell.karmaButton.selected = NO;
        cell.karmaLogo.image = nil;
        [cell.karmaLogo setImage:[UIImage imageNamed:@"logo-grey"]];
        [cell.karmaLogo setNeedsDisplay];
        [cell bringSubviewToFront:cell.karmaLogo];
    }

実行は、必要に応じて if ブロックと else ブロックの両方に入りますが、画像は変更しません。しかし、karmaButton ( UIButton) の強調表示と選択は正常に機能します。

4

2 に答える 2

1

あなたの声明によると、「テーブルをリロードすると、UIImageViewは「YES」状態に変わりません。

これは、テーブルをリロードするたびに、を使用し- (void)setSelected:(BOOL)selected animated:(BOOL)animatedて明示的に画像を設定しているときに呼び出されるためです。ImageView[self.karmaLogo setImage:[UIImage imageNamed:@"logo-grey"]];

したがって、- (void)setSelected:(BOOL)selected animated:(BOOL)animated代わりに条件付きチェックインを行いますcellForRowAtIndexPath:(NSIndexPath *)indexPath

于 2013-09-06T17:49:56.960 に答える