使用未解析的标识符 'scene'

Use of unresolved identifier 'scene'

我试图在找到 'barcode' 时以编程方式更改场景,但我不断收到错误...

导入的模块:

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 期 调用中的参数标签不正确(有 'size:',预期 'coder:')

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)
        }

好的。我认为您可能需要从当前设置中回溯一下。

您应该搜索有关教程的 keywords/key 技术是:

  • 故事板:这是您 define/design 应用流程的地方,您似乎已经有了。
  • UIViewController:在您的情节提要中,您定义了各种视图控制器,这些视图控制器在您的应用程序中代表 UIViewControllers
  • segue:segue 是您在情节提要中的 UIViewControllers 之间导航的方式。你可以连接 segues,这样当你点击一个按钮时它们会自动发生,或者你可以从你的代码中手动调用 segues(这可能是你想要的)。

一个简单的例子。

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

如您所见,我在它们之间添加了一个 UIStoryboardSegue。为此,您按住 ctrl,然后从第一个 UIViewController(如下图所示)上方的黄色框拖动到第二个 UIViewController 和 select 演示文稿样式的任意位置。

记得给你的 segue 一个标识符,我们很快就会需要它。为此,select 继续并查看屏幕右侧。

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

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

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

如果这样做,那么您应该能够从一个 UIViewController 导航到另一个。

在你的情况下,你应该在你的 QRScannerController 和你的 WebLogger 之间添加一个 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?)(例如看看

希望这能给您一些有用的东西。