我有一个游戏,该游戏具有调用另一个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/