我有一个UIView,它有一些我需要添加动作的按钮。
我试过这个:
HeaderViewController * header = [[HeaderViewController alloc]initWithNibName:@"HeaderViewController" bundle:[NSBundle mainBundle]];
[header.aboutUs addTarget:self action:@selector(aboutUsPage:) forControlEvents:UIControlEventTouchUpInside];
[header.MyLibrary addTarget:self action:@selector(myLibraryPage:) forControlEvents:UIControlEventTouchUpInside];
[self.tableView addParallaxWithView:header.view andHeight:229];
但按钮根本没有响应。
我做错了什么。
答案 0 :(得分:1)
就是这样,您正在创建视图控制器,然后为被视为视图控制器属性的按钮设置目标和操作。
我怀疑如果您在设置目标和操作之前记录或设置断点然后单步执行,则按钮将为零。
视图控制器懒洋洋地加载视图。因此,虽然您已经创建了视图控制器,但您还没有要求它加载它的视图。所以按钮还没有从笔尖创建。因此属性为零,而不是设置目标动作。
修复它的第一个选择是移动最后一行,使其如下所示:
[self.tableView addParallaxWithView:header.view andHeight:229];
[header.aboutUs addTarget:self action:@selector(aboutUsPage:) forControlEvents:UIControlEventTouchUpInside];
[header.MyLibrary addTarget:self action:@selector(myLibraryPage:) forControlEvents:UIControlEventTouchUpInside];
这样你就会调用视图,它会初始化它,之后按钮参数不应该是nil。
执行此类操作的更经常的方法是定义用于响应按钮上的点击的协议,并使调用视图控制器成为实现协议方法的委托。这样,您只需在创建对象时设置委托,而不必每次都配置按钮。
答案 1 :(得分:0)
如果你写:
[header.aboutUs setTarget:self];
如果你的类(我的意思是我自己)实现了函数aboutUsPage:
,它应该可以工作。