使用未解析的标识符'场景'

时间:2017-06-02 10:42:50

标签: swift sprite-kit uikit scene

我正在尝试以编程方式更改场景时的条形码'已被发现,但我一直都有错误...

导入的模块:

import UIKit
import AVFoundation
import SpriteKit
import SceneKit

代码:

        if metadataObj.stringValue != nil {
            messageLabel.text = "Found: " + metadataObj.stringValue
            myBarcode = metadataObj.stringValue

            let transition = SKTransition.reveal(with: .down, duration: 1.0)

            let nextScene = WebLogger(size: scene!.size) *<-- use of unresolved identifier 'scene'
            nextScene.scaleMode = .AspectFill

            scene?.view?.presentScene(nextScene, transition: transition) *<-- use of unresolved identifier 'scene'
        }

通过添加

修复了问题1
var scene = SKScene()

第2期 通话中的参数标签不正确(有&#39;尺寸:&#39;,预期&#39;编码器:&#39;)

var scene = SKScene()

        if metadataObj.stringValue != nil {
            messageLabel.text = "Found: " + metadataObj.stringValue
            myBarcode = metadataObj.stringValue

            let transition = SKTransition.reveal(with: .down, duration: 1.0)

            let nextScene = WebLogger(size: scene!.size) *<-- Incorrect argument label in call (have 'size:', expected 'coder:')
            nextScene.scaleMode = .AspectFill

            scene?.view?.presentScene(nextScene, transition: transition)
        }

1 个答案:

答案 0 :(得分:0)

行。我想你可能不得不从你当前的设置中稍微退一步。

您应该搜索教程的关键字/关键技术是:

  • 故事板:这是您定义/设计应用程序流程的地方,您似乎已经拥有它。
  • UIViewController:在故事板中,您可以定义各种视图控制器,您可以通过它来代表应用中的UIViewControllers
  • segue:segue是您在故事板中UIViewControllers之间导航的方式。您可以连接segue,以便在您点击按钮时自动发生,或者您可以从代码中手动调用segue(这可能是您所希望的)。

一个简单的例子。

我创建了一个包含两个UIViewControllers(FirstViewController和SecondViewController)的项目。

Project Structure

在他们之间,我已经添加了UIStoryboardSegue,你可以看到。为此,您按住ctrl,然后从第一个UIViewController上方的黄色框(如下图所示)拖动到第二个UIViewController上的任意位置,并选择您的演示风格。

Drag from this bad boy

请记住给你的segue一个标识符,我们需要在一秒钟内完成。为此,请选择segue并查看屏幕右侧。

Identifier is important

最后一步是调用segue。我在FirstViewController中的按钮中添加了IBAction,如下所示:

@IBAction func navigateToPageTwo(_ sender: UIButton) {
   performSegue(withIdentifier: "mySegue", sender: nil)
}

(见......我告诉你标识符很重要;))。

如果你这样做,那么你应该能够从一个UIViewController导航到另一个。{/ p>

在您的情况下,您应该在QRScannerControllerWebLogger之间添加一个segue,然后执行以下操作:

if metadataObj.stringValue != nil {
    messageLabel.text = "Found: " + metadataObj.stringValue
    myBarcode = metadataObj.stringValue

    performSegue(withIdentifier: "nameOfYourSegue", sender: nil)
}

如果您需要在两个UIViewControllers之间传递数据,则应该查看方法prepare(for segue: UIStoryboardSegue, sender: Any?)(例如,查看this question and answer

希望能为你提供一些工作。