为什么按钮开关不工作



我创建了一个按钮开关案例。按下按钮时,图像被添加到子视图中。再次单击按钮时,它将从超级视图中删除图像。如果再次单击,它将再次添加图像,等等。

        var buttonState: Int = 0;
        func addfriend(sender: UIButton){
        switch(buttonState){
            case 0:
                self.view.addSubview(cameramethod)
                self.view.addSubview(searchmethod)
                self.view.addSubview(nearbymethod)
                buttonState = 1;
         break;
            case 1:
                cameramethod.removeFromSuperview()
                searchmethod.removeFromSuperview()
                nearbymethod.removeFromSuperview()
               default: break;
        }


}

你想要这样吗?

func addfriend(sender: UIButton){
        switch(buttonState){
            case 0:
                self.view.addSubview(cameramethod)
                self.view.addSubview(searchmethod)
                self.view.addSubview(nearbymethod)
                buttonState = 1;
            break;
            case 1:
                cameramethod.removeFromSuperview()
                searchmethod.removeFromSuperview()
                nearbymethod.removeFromSuperview()
                buttonState = 0;
            break;
            default: break;
        }
}

我认为应该使用布尔类型而不是Integer来保存按钮状态:

var buttonDisplay = false
func addfriend(sender: UIButton){
    // toggle your button state when pressed
    buttonDisplay = !buttonDisplay
    // check if true
    if buttonDisplay {
        // case positive add your subviews
        view.addSubview(cameramethod)
        view.addSubview(searchmethod)
        view.addSubview(nearbymethod)
    else {
        // otherwise remove them
        cameramethod.removeFromSuperview()
        searchmethod.removeFromSuperview()
        nearbymethod.removeFromSuperview()
    }
}

这样做,就可以使用按钮的标记值。

  func addfriend(sender: UIButton){
        switch(sender.tag){
            case 0:
                self.view.addSubview(cameramethod)
                self.view.addSubview(searchmethod)
                self.view.addSubview(nearbymethod)
                sender.tag = 1;
         break;
            case 1:
                cameramethod.removeFromSuperview()
                searchmethod.removeFromSuperview()
                nearbymethod.removeFromSuperview()
                sender.tag = 0;
               default: break;
        }

最新更新