मैं SpriteKit का उपयोग कर एक गेम बना रहा हूं। मेरे पास 3 व्यू कंट्रोलर हैं: लेवल वीसी, गेम वीसी, और वीसीसी जीतना। खेल खत्म हो जाने के बाद, मैं जीत वीसी दिखाना चाहता हूं, फिर अगर मैं जीत वीसी पर ओके बटन दबाता हूं, तो मैं जीत वीसी और गेम वीसी (स्टैक से पॉप दो व्यू कंट्रोलर) को खारिज करना चाहता हूं। लेकिन मैं इसे कैसे करना है क्योंकि अगर मैंएक से अधिक दृश्य नियंत्रक को एक साथ खारिज करें
self.dismissViewControllerAnimated(true, completion: {})
जीत कुलपति (ढेर के ऊपर) को खारिज कर दिया है फोन पता नहीं है, इसलिए मैं नहीं जानता कि जहां इसे फिर से खेल कुलपति को बर्खास्त करने कॉल करने के लिए। क्या नेविगेशन नियंत्रक का उपयोग किये बिना मैं इसे ठीक कर सकता हूं?
यह 1 कुलपति है: (कृपया के साथ शुरू नीचे मेरी टिप्पणी पर ध्यान देना "//")
class SelectLevelViewController: UIViewController { // I implemented a UIButton on its storyboard, and its segue shows GameViewController
override func viewDidLoad() {
super.viewDidLoad()
}
}
यह 2 कुलपति है:
class GameViewController: UIViewController, UIPopoverPresentationControllerDelegate {
var scene: GameScene!
var stage: Stage!
var startTime = NSTimeInterval()
var timer = NSTimer()
var seconds: Double = 0
var timeStopped = false
var score = 0
@IBOutlet weak var targetLabel: UILabel!
@IBOutlet var displayTimeLabel: UILabel!
@IBOutlet weak var scoreLabel: UILabel!
@IBOutlet weak var gameOverPanel: UIImageView!
@IBOutlet weak var shuffleButton: UIButton!
@IBOutlet weak var msNum: UILabel!
var mapNum = Int()
var stageNum = Int()
var tapGestureRecognizer: UITapGestureRecognizer!
override func viewDidLoad() {
super.viewDidLoad()
let skView = view as! SKView
skView.multipleTouchEnabled = false
scene = GameScene(size: skView.bounds.size)
scene.scaleMode = .AspectFill
msNum.text = "\(mapNum) - \(stageNum)"
stage = Stage(filename: "Map_0_Stage_1")
scene.stage = stage
scene.addTiles()
scene.swipeHandler = handleSwipe
gameOverPanel.hidden = true
shuffleButton.hidden = true
skView.presentScene(scene)
Sound.backgroundMusic.play()
beginGame()
}
func beginGame() {
displayTimeLabel.text = String(format: "%ld", stage.maximumTime)
score = 0
updateLabels()
stage.resetComboMultiplier()
scene.animateBeginGame() {
self.shuffleButton.hidden = false
}
shuffle()
startTiming()
}
func showWin() {
gameOverPanel.hidden = false
scene.userInteractionEnabled = false
shuffleButton.hidden = true
scene.animateGameOver() {
self.tapGestureRecognizer = UITapGestureRecognizer(target: self, action: "hideWin")
self.view.addGestureRecognizer(self.tapGestureRecognizer)
}
}
func hideWin() {
view.removeGestureRecognizer(tapGestureRecognizer)
tapGestureRecognizer = nil
gameOverPanel.hidden = true
scene.userInteractionEnabled = true
self.performSegueWithIdentifier("win", sender: self) // this segue shows WinVC but idk where to dismiss this GameVC after WinVC gets dismissed...
}
func shuffle() {...}
func startTiming() {...}
}
और यह 3 है कुलपति:
class WinVC: UIViewController {
@IBOutlet weak var awardResult: UILabel!
@IBAction func dismissVC(sender: UIButton) {
self.dismissViewControllerAnimated(true, completion: {}) // dismissing WinVC here when this button is clicked
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
अधिक सामान्य खारिज करने के लिए अधिक है कि एक मॉडल दृश्य नियंत्रक [यहां] है जिस तरह से (https://stackoverflow.com/a/44583711/1151916) – Ramis