我基本上得到了一些代码,我在屏幕上移动按钮,如果按钮被放到某个视图上,我需要将该按钮从视图中删除。
我认为self.removeFromSuperview()可能会起作用,因为我认为它可能基于superView基于该代码触发时按钮的视图?但我想我并不完全理解这一切。
有没有办法让我的touchesEnded func工作,我在检查视图中是否删除了按钮,还是需要将NSNotification发送到我的其他视图并在那里处理?< / p>
我刚刚打印出来的东西并且有效,但删除工作并没有发生。
答案 0 :(得分:0)
您需要在按钮指针上调用removeFromSuperview
。
myButton.removeFromSuperview()
另外,请确保在主线程上调用removeFromSuperview
。
答案 1 :(得分:0)
如果我正确理解您的问题,屏幕上会显示UIButtons,用户可以拖动它们。如果他们将它们拖到某个位置(让我们称之为垃圾桶),你想要删除它。
您当然不希望从superview中删除自己的视图控制器,这就是self.removeFromSuperView()正在执行的操作。相反,在touchesEnded中,试试这个:
override func touchesEnded(touches: Set, withEvent event: UIEvent) {
super.touchesEnded(touches, withEvent: event)
let touch: UITouch = touches.first as! UITouch
if touch.view.isKindOfClass(UIButton) {
touch.view.removeFromSuperview()
}
}