【发布时间】:2015-08-02 18:06:25
【问题描述】:
我最近一直在玩 swift segues,我很想在我最新的应用程序中加入一个,问题是我似乎无法让它们工作。到目前为止,我已经创建了另一个视图控制器 SecondViewController 并在我的 ViewController 和 SecondViewController 文件中这样引用:
ViewController.swift
import UIKit
class ViewController: UIViewController {
var secondViewController: SecondViewController!
var viewController: ViewController!
override func viewDidLoad() {
//lots more code here
SecondViewController.swift
import UIKit
class SecondViewController: UIViewController {
var secondViewController: SecondViewController!
var viewController: ViewController!
override func viewDidLoad() {
他们在故事板视图中我已经 crtl+将一个 segue 从 viewController 拖到 secondViewController 并且一旦使用右侧面板创建了 segue 标识符,segue 标识符是 GameOver 和 segue 类型是show。
现在我想在没有用户交互的情况下自动调用 segue,在最终的应用程序中,一旦用户通过 func 击中游戏,它将触发 segue 并显示一个新的 UIView,其中高分可以与其他一些显示项目。
我用来调用 segue 的代码是:
self.viewController.performSegueWithIdentifier("GameOver", sender: self)
我收到以下错误...
Thread 1:EXC_BAD_INSTRUCTION (code=EXC_1386_INVOP, subcode=0x0
我在输出字段中也有这个错误...
fatal error: unexpectedly found nil while unwrapping an Optional value
(lldb)
我已经使用了 segues 的名称和文件名,但仍然遇到同样的错误,我确定我缺少一些基本的东西,所以希望有人可以帮助我解决这个问题。
我创建了一个新项目并将其上传到 GitHub,如果有人能告诉我我缺少什么,那就太好了,这是我的 GitHub 存储库的链接https://github.com/rich84ts/TestSingleView
谢谢。
【问题讨论】:
-
好吧,一方面,你的 segue 是 Show segue。但这没有任何意义 - 你不在导航控制器中。
-
@matt,我同意他不应该在这里进行 Show segue,但是如果 viewController 没有嵌入 NavigationController 中,iOS 会以模态方式呈现。
-
@vacawama 你知道,我也知道,但如果他知道自己在做什么而不是意外工作会更好。 :)
标签: ios iphone swift uiviewcontroller segue