0

選択されたボタンに応じて 2 つのボタンを切り替えるコードをいくつか書きました。UK が選択されている場合はオンになり、BR はオフになり、その逆も同様です。ただし、これは UK ボタンの場合のみのようです。UK ボタンのチェックを外すよりも BR ボタンを選択すると、BR ボタンが一時的にカチカチ音をたてますが、その後再びカチカチ音をたてます。

ボタンを正しくリンクしました (3 回チェックしました)。BR ボタンが短くカチカチ音をたてると、間違いなくリンクされています。私が使用しているコードは以下のとおりです。

.h

@property (weak) IBOutlet UIButton *btUK;
@property (weak) IBOutlet UIButton *btBR;

.m

- (IBAction)changePortal:(id)sender
{
    UIButton *button = (UIButton *)sender;

    if (button.tag == kUKButton)
    {
        self.btUK.imageView.image = [UIImage imageNamed:@"tick_box.png"];
        self.btBR.imageView.image = [UIImage imageNamed:@"tick_box_empty.png"];
        [Singleton sharedSingleton].bUseUKPortal = YES;
    }
    else if (button.tag == kBRButton)
    {
        self.btBR.imageView.image = [UIImage imageNamed:@"tick_box.png"];
        self.btUK.imageView.image = [UIImage imageNamed:@"tick_box_empty.png"];
        [Singleton sharedSingleton].bUseUKPortal = NO;
    }
}

コード内にブレークポイントを設定し、クリックすると両方のボタンが関連するセクションに移動することを確認しました。また、すべてを記述したばかりなので、他のコードで btUK 変数と btBR 変数を使用していないことも確認できます。

どちらのボタンにもアクションとして changePortal が設定されており、この関数はクリックごとに 1 回だけ呼び出されます。

コードのクリーニングも試みましたが、問題は解決しませんでした。

なぜこれが起こっているのかについて誰かが光を当てることができれば、私はとても感謝しています.

4

1 に答える 1

2

a のイメージを設定する正しい方法UIButtonは、 を呼び出すことsetImage:forState:です。したがって、コードを次のように変更してみてください。

// Follow this pattern for every button image change
[self.btUK setImage:[UIImage imageNamed:@"tick_box.png"] forState:UIControlStateNormal];


imageViewプロパティ に関して、ドキュメントには次のように記載されています。

ボタンのイメージ ビュー。(読み取り専用)

@property(nonatomic, readonly, retain) UIImageView *imageView

討論

このプロパティは読み取り専用ですが、独自のプロパティは読み取り/書き込み可能です。これらのプロパティを使用して、ボタンのビューの外観と動作を構成します。例えば:

UIButton *button = [UIButton buttonWithType: UIButtonTypeRoundedRect];
button.imageView.exclusiveTouch = YES;

ボタンがまだ表示されていない場合でも、imageView プロパティは値を返します。システム ボタンのプロパティの値は nil です。

于 2013-02-26T11:41:20.913 に答える