1

我在情节提要的原型单元中有两个按钮。一个用于 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 中有两个按钮。当一个按钮被按下时,另一个按钮可以改变状态以显示背景图像,例如选中或突出显示。

提前致谢。

4

2 回答 2

0

以这种方式导航视图层次结构通常不是一个好主意,正如您所发现的,操作系统版本之间可能存在差异,这可能会破坏您的代码。

如果您的 IBAction 和 IBOutlet 都连接到您的 MyTableViewCell 类,您可以简单地使用:

- (void)buttonPress:(UIButton *)sender
{
  self.outletButton.selected = YES;
  ...
}

您还需要prepareForReuse:在 MyTableViewCell 中实现以停止在重用单元格时复制按钮的属性。

于 2013-11-12T17:53:58.257 回答
0

superview在 iOS6 和更早版本上,您的代码看起来不错,但在 iOS 7 上,如果您想进入单元格,则必须再执行一步。所以它将是:

MyTableViewCell *cell = (MyTableViewCell *)[[[sender superview] superview] superview];
于 2013-11-12T16:47:07.633 回答