我有一个游戏,该游戏具有调用另一个SKScene的功能。这SKScene是我的gameOver场景。这个游戏场景有一个UIButton,UIButton链接到一个函数,该函数删除该场景中的所有UIButton,然后再次调用常规游戏场景。如果我运行了3到4次,则按钮将被删除,游戏将重新开始,不会出现任何问题。但是,在第4或第5场比赛中,一旦我按了“再次播放”按钮,当游戏在常规游戏屏幕类别中时,这些按钮将停留在屏幕上,并且没有任何功能。这是怎么回事,因为肯定是因为我在函数中打印了某些内容而调用了该函数。有人可以帮忙解决这个问题。

    func playAgainAction(sender: UIControlEvents){
    removeGameOverButtons()
    let reveal : SKTransition = SKTransition.crossFadeWithDuration(0.5)
    let scene = GameScene(size: self.view!.bounds.size)
    scene.scaleMode = .AspectFill
    self.view?.presentScene(scene, transition: reveal)
}

func removeGameOverButtons(){
    self.playAgainButton.removeFromSuperview()
    self.noAdsButton.removeFromSuperview()
    self.rateButton.removeFromSuperview()
    self.shareButton.removeFromSuperview()
    self.leaderboardsButton.removeFromSuperview()
    self.watchAdsButton.removeFromSuperview()
    print("There should be no reason that there labels are not being removed")

}

最佳答案

   self.rateButton = UIButton(type: UIButtonType.Custom)
    self.rateButton.setImage(rateButtonImage, forState: .Normal)
    self.rateButton.frame = CGRectMake(self.frame.size.width*3/4 - 26, self.frame.height*3/5 - 95 - 95, 110,75)
    self.rateButton.layer.anchorPoint = CGPointMake(1.0, 1.0)
    self.rateButton.layer.zPosition = 0
    //Attach an action to the play again button
    self.rateButton.addTarget(self, action: "noAdsAction:", forControlEvents: UIControlEvents.TouchUpInside)
    delay(0.5){
        view.addSubview(self.rateButton)
    }


这是我在其中添加按钮的代码的副本。因此,它在头几次运行都可以,但是在时间3或4上它们并没有被移除。
游戏上所有“我的按钮”的添加完全相同

关于ios - 我的subView没有从SuperView Xcode7 Swift中删除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35073489/

10-11 20:48
查看更多