Отклонить более одного контроллера представления одновременноIOS

Программируем под IOS
Ответить
Anonymous
 Отклонить более одного контроллера представления одновременно

Сообщение Anonymous »

Я делаю игру, используя SpriteKit.
У меня есть 3 контроллера представления: выбор уровня vc, игра vc и победа vc.
После окончания игры я хочу показать выигрыш vc, затем, если я нажму кнопку ОК на win vc, я хочу закрыть win vc И игровой vc (вытащить два контроллера представления из стека). Но я не знаю, как это сделать, потому что если я позвоню

self.dismissViewControllerAnimated(true, completion: {})


win vc (верхняя часть стека) закрыт, поэтому я не знаю, куда его еще раз вызвать, чтобы закрыть vc игры.
Есть ли как я могу это исправить без использования навигационного контроллера?

Это первый виртуальный инструмент: (обратите внимание на мои комментарии ниже, начинающиеся с «//»)

class SelectLevelViewController: UIViewController { // I implemented a UIButton on its storyboard, and its segue shows GameViewController
override func viewDidLoad() {
super.viewDidLoad()
}
}


Это второй виртуальный инвестор:

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/questions/309 ... ltaneously
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»