从子类代码中删除viewController中的按钮?

时间:2016-07-29 19:15:30

标签: ios swift

我基本上得到了一些代码,我在屏幕上移动按钮,如果按钮被放到某个视图上,我需要将该按钮从视图中删除。

我认为self.removeFromSuperview()可能会起作用,因为我认为它可能基于superView基于该代码触发时按钮的视图?但我想我并不完全理解这一切。

有没有办法让我的touchesEnded func工作,我在检查视图中是否删除了按钮,还是需要将NSNotification发送到我的其他视图并在那里处理?< / p>

我刚刚打印出来的东西并且有效,但删除工作并没有发生。

2 个答案:

答案 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()
    }


}