我在故事板中的Prototype Cell中有两个按钮。一个用于IBAction,另一个用于IBOutlet。然后将UITableViewCell子类化为MyTableViewCell并将其指向故事板中的Prototype Cell。然后我控制+将动作按钮拖动到MyTableViewCell以创建IBAction,并对出口按钮执行相同操作以创建IBOutlet。
在方法中:
-(void)buttonPress:(UIButton *)sender
{
MyTableViewCell *cell = (MyTableViewCell *)[[sender superview] superview];
cell.outletButton.selected = YES;
...
}
我收到错误消息:
原因:' - [UITableViewCellScrollView outletButton]:无法识别的选择器发送到实例
我做错了什么?我尝试做的是在Prototype Cell中有两个按钮。按下一个按钮时,另一个按钮可以更改状态以显示背景图像,例如选中或突出显示。
提前致谢。
答案 0 :(得分:0)
在iOS6及更早版本上,您的代码似乎很好,但是在iOS 7上,如果您想要进入单元格,则必须再执行superview
步骤。所以它将是:
MyTableViewCell *cell = (MyTableViewCell *)[[[sender superview] superview] superview];
答案 1 :(得分:0)
以这种方式导航视图层次结构通常不是一个好主意,正如您所发现的那样,可能会破坏您的代码的操作系统版本之间存在差异。
如果您的IBAction和IBOutlet都连接到MyTableViewCell类,您只需使用:
- (void)buttonPress:(UIButton *)sender
{
self.outletButton.selected = YES;
...
}
您还需要在MyTableViewCell中实现prepareForReuse:
,以便在重复使用单元格时停止复制按钮的属性。