注意:我只是在模拟器上测试了这个。
我想在代码中添加target-action,而不是在Interface Builder中将其作为IBAction连接。
theButton
位于左上角的导航栏上,在IB中创建。
步骤:
将theButton
声明为IBOutlet并将其连接到IB。
在viewDidLoad
中添加了此内容:
self.theButton.target = self;
self.theButton.action = @selector(theAction);
我正在测试theAction
:
- (void)theAction {
NSLog(@"theAction called");
//do some other stuff
}
当我在模拟器中点击theButton
时,没有任何反应。我根本没有看到NSLog声明。
我错过了什么?
答案 0 :(得分:4)
您是否已将操作连接到interface-builder中的按钮?
如果不是,您应该在.h文件中声明操作
-(IBAction)theAction;
更改.m文件上的操作名称
-(IBAction)theAction{
}
并将操作连接到interface-builder中的按钮。
答案 1 :(得分:3)
更改您的功能如下:
-(IBAction)theAction{
NSLog(@"theAction called");
//do some other stuff
}
如果你打电话给“@selector(theAction :);” 然后改变功能如下:
-(IBAction)theAction:(id)sender{
NSLog(@"theAction called");
//do some other stuff
}
希望它对你有所帮助。
如有任何困难,请告诉我。
答案 2 :(得分:0)
想出来。不得不做我的配置。我正在使用一个标签栏控制器,它为多个标签使用相同的视图控制器。每个视图控制器都会显示某些选项卡项的不同过滤数据。
因此,在这样的配置中,您必须确保为标签栏项目包含的每个视图控制器连接IBOutlets。我只连接了一个,这就是为什么它不适用于某些标签项。