【问题标题】:Edit UILabel From inside a View Frame从视图框架内编辑 UILabel
【发布时间】:2016-05-11 06:30:09
【问题描述】:

我在ViewController 内部有一个UILabel 和一个View,在View 中我有一个GameScene

'''''''''''''''  <- GameStartViewController
'      L      '
'  '''''''''  '     L = UILabel
'  '   V   '  '     V = View Frame
'  '       '  '
'  '       '  '
'  '       '  '
'  '''''''''  '
'             '
'''''''''''''''

我正在尝试更新视图内部的分数标签,但我不断收到

fatal error: unexpectedly found nil while unwrapping an Optional value

即使已连接,我也无法更改颜色、设置文本等...

代码:

GameScene.swift

var gs: GameStartViewController!

override func didMoveToView(view: SKView) {
    physicsWorld.contactDelegate = self
    self.backgroundColor = UIColor.feelFreeToColor()
    gs.scoreLabel.text = "\(score)" // THIS DOES NOT WORK
}

GameStartViewController.swift

@IBOutlet weak var selfView: SKView!
@IBOutlet weak var scoreLabel: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()

    self.view.backgroundColor = UIColor.feelFreeToColor()
    self.initAdMobBanner()

    let scene: GameScene = GameScene(size: view.bounds.size)
    let skView = selfView
    scene.scaleMode = .AspectFill
    skView.presentScene(scene)

    scoreLabel.layer.addBorder(UIRectEdge.Bottom, color: UIColor.blackColor(), thickness: 3) // THIS WORKS
}

我可以从视图控制器编辑它,但不能在视图框架内。如何从视图框架内访问它?

【问题讨论】:

  • 您是否混合了视图的命名?上面的代码是View,下面是ViewController,对吧?
  • 啊,对不起。重新排列了文件标题...

标签: ios swift skview


【解决方案1】:

您在哪里设置对您视图中父级的引用(在您的情况下为gs)?

尝试像这样在 ViewController 中设置父引用:

override func viewDidLoad() {
    super.viewDidLoad()

    self.view.backgroundColor = UIColor.feelFreeToColor()
    self.initAdMobBanner()

    let scene: GameScene = GameScene(size: view.bounds.size)

    // Notice!
    scene.gs = self

    let skView = selfView
    scene.scaleMode = .AspectFill
    skView.presentScene(scene)

    scoreLabel.layer.addBorder(UIRectEdge.Bottom, color: UIColor.blackColor(), thickness: 3) // THIS WORKS
}

【讨论】:

    【解决方案2】:

    如果您尝试gs.scoreLabel.text = "Test content" 会发生什么?

    你在哪里设置和填充 score 变量?

    【讨论】:

    • score变量是初始视图控制器中的全局变量,它在GameStartViewController中有效,但在GameStartViewController视图内的视图中无效
    猜你喜欢
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多