将一个按钮(作为子视图)添加到多个UIView

时间:2012-07-23 15:41:35

标签: iphone uikit

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

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

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

[myButton removeFromSuperview];

这会导致从两个视图中删除按钮。任何想法我怎么能实现这个???

奥贝德

2 个答案:

答案 0 :(得分:2)

  

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

它可能看起来那样,但是当myButtonviewOverlay添加到viewButtons时,-addSubview:已被删除。来自viewOverlay的文档:

  

视图只能有一个超级视图。如果视图已经有超视图和   该视图不是接收者,此方法删除了以前的   在使接收器成为新的超级视图之前的超视图。

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

答案 1 :(得分:1)

您无法同时向多个视图添加一个视图。在这种情况下,首先添加的视图将被删除并添加第二个。为此,您需要再创建一个实例或副本。

来自here -

  

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