0

カードというUIButtonインスタンスがあります。UIImageであるプロパティ「image」を持つ「Representer」というオブジェクトがあります。実行時にボタンの画像の値を変更しようとしています。Interface Builderにボタンがあり、ボタンでIBOutletを宣言しています。私はこのコードを書きます:

UIButton *card1 = [[UIButton alloc] init]; 
[card1 setImage:representer.image forState:UIControlStateNormal]; 

このコードをコンパイルしても、ボタンの画像は変更されません。誰か助けてください!

4

2 に答える 2

3

まず、ボタンがInterface BuilderのIBOutletに接続されていることを確認する必要がありますが、Connections Inspectorを使用して接続しましたか?

.hに次のようなボタンがある場合:

@property (nonatomic, retain) IBOutlet UIButton *option1Button;

次に、.mファイルで次のように呼び出します。

[option1Button setImage:representer.image forState:UIControlStateNormal];

コードでは、別のUIButtonをインスタンス化し、その上に画像を設定するだけです。これはすばらしいコードですが、xibのボタンとは何の関係もありません。

これは間違いなく、IBOutletがInterfaceBuilderに正しく配線されていることを前提としています。外観は次のとおりです。

ここに画像の説明を入力してください

また、ボタンの背景画像とボタンの画像の一貫性を保つ必要があります。それらは2つの異なるものです。Interface Builderで「画像」を指定した場合は、コードでも同じことを行います。その逆も同様です。

于 2012-05-15T02:05:34.103 に答える
0

画像を変更する行にブレークポイントを設定し、cardOneがnilでないことを確認します。(またはNSLogステートメントを使用します。)コードが期待どおりに機能しない非常に一般的な理由は、アウトレットリンクの破損です。

于 2012-05-15T02:31:04.700 に答える