4

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 に設定しようとしているテキストは更新されません。

4

1 に答える 1