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

Iphone 将一个按钮(作为子视图)添加到多个UIView,iphone,uikit,Iphone,Uikit,我有一个UIButton,我想将它添加到多个UIView中。稍后-我想将其从一个超级视图中删除。我尝试以下方法,但当我将removeFromSuperview消息传递给按钮时,它将从两个视图中删除: [viewOverlay addSubview:myButton]; [viewButtons addSubview:myButton]; 之后,我只希望将其从viewOverlay中删除 [myButton removeFromSuperview]; 这将导致从两个视图中删除按钮。你知道我怎样

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

[viewOverlay addSubview:myButton];
[viewButtons addSubview:myButton];
之后,我只希望将其从viewOverlay中删除

[myButton removeFromSuperview];
这将导致从两个视图中删除按钮。你知道我怎样才能做到这一点吗


Obaid

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

从-

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

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

它可能看起来是这样的,但是当您将它添加到
viewButtons
时,
myButton
已从
viewOverlay
中删除。从
-addSubview:
的文档中:

视图只能有一个superview。如果视图已具有superview,则 该视图不是接收器,此方法将删除以前的 将接收器设置为新的superview之前,请查看superview

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

你不能这样做,每个
UIView
子类(如
UIButton
)在同一时间只有一个superview,没有更多。:)