2012-01-26 4 views
3

ボタンをクリックすると、ラベルのテキストが変更されます。ここに私のコントローラモジュール(happydaysViewController.m)から自分のコードの抜粋です:IOS:クリックしたときにボタンの背景イメージを変更するにはどうすればよいですか?

#import "happydaysViewController.h" 

@implementation happydaysViewController 

-(IBAction)button { 

    label.text = @"pop tart"; 
    button.image = @"Costa Rican Frog.jpg"; 
} 

ので、ラベルテキストは、しかし、ボタンの背景画像はコスタにブランクから変更されません、タルトをポップするために、ブランクから変更しますRican Frog.jpg。

「ボタン」

を宣言されていない私はこの間違った方法に近づいています:実際に、私は次のエラーを取得しますか?

答えて

4

このコードで間違ってはかなりたくさんありますが。すべてをリストするのではなく、私はちょうどあなたにそれがすべきであることを示すでしょう!

happydaysViewController.hファイル:

@interface happydaysViewController : UIViewController 

@property (nonatomic, strong) IBOutlet UILabel *label; //in IB drag this to your label 
@property (nonatomic, strong) IBOutlet UIButton *button; //in IB drag this to your button 

-(IBAction)buttonClicked:(UIButton *)sender; //in IB drag you button to this action 

@end 

happydaysViewController.mファイル:

#import "happydaysViewController.h" 

@implementation happydaysViewController 

@synthesize label; 
@synthesize button; 

-(IBAction)buttonClicked:(UIButton *)sender 
{ 
    label.text = @"pop tart"; 
    UIImage *image = [UIImage imageNamed:@"Costa Rican Frog.jpg"]; 
    [sender setImage:image forState:UIControlStateNormal]; 
} 

@end 

ので(順不同)を固定するためのもの:

  1. あなたがすることはできませんイメージ値を文字列で設定する場合は、UIImageオブジェクトを作成し、イメージファイルをそのイメージにロードする必要があります。幸運にも[UIImage imageNamed:...]はそれをとても簡単にします。

  2. ボタンは、状態(強調表示、選択、無効など)ごとに複数の画像を持つことができるので、画像を設定するときに指定する必要があります。

  3. あなたが実際にボタンと呼ばれるプロパティを持っていないことを示しています。これは、あなたのクラスに追加したことがないためかもしれません。あるいは、IBActionメソッド "button"これはボタンと呼ばれるプロパティのgetterメソッドと競合しています。これはボタンとも呼ばれます。私のコードでは、ボタンをパラメータとしてclickメソッドに渡しています(名前を変更する場合は、IBのボタンを再バインドする必要があります)。これは、a)ボタンを取得する別の方法と、b)変更を提供するメソッドの名前ですので、View Controllerにbuttonというプロパティが必要な場合は競合しません。

+0

あなたも考慮する必要があるものは、tiffやpngのような画像フォーマットを使用してみてください。また、スペースを削除します。以前はjpgファイルの問題に遭遇しました。 –

+0

完全に真実ではありません。これを読んでください:http://stackoverflow.com/questions/3929281/when-to-use-png-or-jpg-in-iphone-development - 基本的に、PNGを使用して、小さな画像や透明度を持つ画像に使用し、JPEGを大不透明な画像や写真。 –

+0

が記載されています。ありがとう:) –

0

あなたはこの記述する必要があり:

[[self button] setImage:[NSImage imageNamed:@"Costa Rican Frog.jpg"]]; 
+2

これはMac OS用です。問題はiOSの問題でした。それはまた彼がボタンのアウトレットを作成したと仮定していますが、これははっきりしていません。 –

+0

コンセントを作ったのはどういう意味ですか?私は2つだけを追加しました:1)ボタン2)ボタンの上のラベル。インターフェイスビルダーでは、ボタンからラベルに接続をドラッグします。 – tonyrocks

+0

ボタンをラベルに接続したらどういう意味ですか? 1つのIBAction buttonClicked:メソッドと、2つのIBOutlet @properties(happydaysViewControllerクラス)、1つはボタンと呼ばれるUIButton、もう1つはlabelというUILabelです。これらをIBのそれぞれのボタンとラベルにドラッグする必要があります。次に、ボタンからIBAction buttonClicked:メソッドにドラッグする必要があります。 –

0

「強調表示」は、タッチがコントロールに入ったり閉じたりするときに発生するコントロールの状態です。

この例では、タッチアップ時にボタンが変更されることを示すUIButtonをプログラムで作成します。

- (void)drawButton 
{ 
myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
myButton.frame = CGRectMake(80, 50, 70, 70); //set frame for button 

UIImage *buttonImage = [UIImage imageNamed:@"icon6.png"]; 
[myButton setBackgroundImage:buttonImage forState:UIControlStateNormal]; 

[myButton setTitle:@"Ok" forState:UIControlStateNormal]; 
[myButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside]; 

[self.view addSubview:myButton]; 

} 

- (void)viewDidLoad { 
[super viewDidLoad]; 

[self drawButton]; 

} 

は、あなたはそれがタッチアップの画像を変更することができますアプリケーションを実行するには

- (IBAction)buttonClicked:(id)sender 
{ 

UIImage *buttonImage = [UIImage imageNamed:@"home.png"]; 
[myButton setBackgroundImage:buttonImage forState:UIControlStateHighlighted]; 

} 

タッチアップの画像を変更しますボタンアクションを、書き込みボタンを作成します。

関連する問題