3

我有一个 UIButton,我想将它添加到多个 UIViews。稍后 - 我想从其中一个超级视图中删除它。我正在尝试以下方式,但是当我将 removeFromSuperview 消息传递给按钮时,它会从两个视图中删除:

[viewOverlay addSubview:myButton];
[viewButtons addSubview:myButton];

之后我希望它只从 viewOverlay 中删除。

[myButton removeFromSuperview];

这会导致按钮从两个视图中删除。知道我怎么能做到这一点???

奥贝德

4

2 回答 2

2

当我将 removeFromSuperview 消息传递给按钮时,它会从两个视图中删除

它可能看起来那样,但myButtonviewOverlay您将其添加到viewButtons. 从文档中-addSubview:

视图只能有一个超级视图。如果视图已经有一个超级视图并且该视图不是接收者,则此方法会在使接收者成为其新的超级视图之前删除先前的超级视图。

这里唯一正确的解决方案是创建两个按钮并为每个 和 添加viewOverlay一个viewButtons。这两个按钮可以看起来相同,具有相同的目标并执行相同的操作,因此从用户的角度来看,它们看起来就像“相同”的按钮。但是一个视图一次只能有一个超级视图。我的意思是字面上的意思:每个视图都有一个superview指向包含它的视图的指针,而那个点显然一次只能指向一个对象。

于 2012-07-23T16:09:11.627 回答
1

您不能同时将一个视图添加到多个视图。在这种情况下,第一个添加的视图将被删除并添加第二个。要实现这一点,您需要再创建一个实例或现有副本。

这里——

一个父视图可以包含任意数量的子视图,但每个子视图只有一个父视图,它负责适当地定位其子视图。

于 2012-07-23T15:46:01.897 回答