我通过 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 上设置的文本没有更新。