Xcode の Interface Builder を介して作成された 3 つの UIButton があります。
Controller.h で IBOutlet と IBAction を次のように定義します。
@property (strong, nonatomic) IBOutlet UIButton *btnToday;
@property (strong, nonatomic) IBOutlet UIButton *btnToday_less_1;
@property (strong, nonatomic) IBOutlet UIButton *btnToday_less_2;
- (IBAction) setBtnToday: (UIButton *) sender;
- (IBAction) setBtnToday_less_1: (UIButton *) sender;
- (IBAction) setBtnToday_less_2: (UIButton *) sender;
私のController.mにはこれがあります:
@synthesize btnToday;
@synthesize btnToday_less_1;
@synthesize btnToday_less_2;
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[btnToday setTitle:@"Today" forState: UIControlStateNormal];
[btnToday_less_1 setTitle:@"Yesterday" forState: UIControlStateNormal];
[btnToday_less_2 setTitle:@"Day before yesterday" forState: UIControlStateNormal];
}
上記のコードは正常に動作しますが、IBAction を実装すると動作しません。
実装は次のようになります。
-(IBAction)setBtnToday:(UIButton *)sender{ /* a method call */ }
-(IBAction)setBtnToday_less_1:(UIButton *)sender{ /* a method call */ }
-(IBAction)setBtnToday_less_2:(UIButton *)sender{ /* a method call */ }
IBOutlet のいずれかの NSLog を実行すると、nil が返されます。Controller.m ファイルから IBAction のコードを削除すると、再び機能し始めます。
私は何を間違っていますか?
注: 動作しないということは、エラーなしでコンパイルして実行することを意味しますが、UIButton に設定しようとしているテキストは更新されません。