Swift View Controller不会解雇

时间:2018-04-09 04:46:03

标签: swift xcode uiview

所以我在Xcode中有一个基本的游戏。我从Xcode的基本游戏模板开始,主要在'GameScene.swift'中构建我的游戏。当我完成游戏时,我想添加一个带有播放按钮的开始屏幕,所以我创建了一个新的UIViewController并添加了一个按钮。我控制点击并将按钮拖动到GameViewController并创建了一个Modal Segue。然后我希望游戏在玩家死亡时返回。我尝试了各种方法来解散视图,但没有一个工作。我是新手,很快就需要帮助。让我知道找到解决方案需要哪些代码/信息。我已经尝试过在互联网上找到的所有内容。我以为我找到了一种解决方法,通过添加一个按钮和Segue到GameViewController到菜单但是在多次推送之后它阻塞了系统并减速爬行,因为没有人被解雇。我可以提供所需的任何代码。

在GameViewController类的GameViewController.swift内部,我尝试制作一个在游戏结束时调用的函数。 我试图弹出并关闭视图控制器。该函数被调用并且一行打印到控制台但视图仍然存在。打印到控制台的唯一内容是'nil'

class GameViewController: UIViewController {
   func end(){
     print(navigationController?.viewControllers as Any)
     self.navigationController?.popViewController(animated: true)
     self.dismiss(animated: true, completion: nil)
   }

@ Vollan heres the pic

Here is the screenshot of the storyboard

提前感谢。

2 个答案:

答案 0 :(得分:4)

如果按下viewController,则使用self.navigationController?.popViewController(animated: true)

如果您以模态方式呈现,则使用 self.dismiss(self, animated: true)

当你使用模态segue呈现它时 self.presentingViewController?.dismiss(animated: true, completion: nil)

答案 1 :(得分:0)

我在故事板中有一个模式segue,从一个视图控制器到另一个视图控制器。然后我有一个按钮,它连接到刚运行的IBAction dismiss(animated: true, completion: nil)

检查并重做从故事板到代码的连接。在对代码进行大量更改时,Xcode有时会丢失连接。