实例化视图控制器不工作
Instantiate View Controller not working
我正在尝试加载另一个 UIViewController
,以便我可以在其中获取 IBOutlets
的数据。我正在使用 Swift 和 Sprite-Kit。我说的UIViewController
叫做GameViewController
。这是我游戏中加载的第一件事。然后它转到我的 GameScene
。这是我尝试实例化我的 GameViewController
的地方。我想这样做是因为我正在使用一个名为 iCarousel
的库,并且我想将它从我的 GameScene
向上移动。但是,iCarousel 只能在 UIViewController
上使用。所以我想在 GameViewController
中调用一个将在 GameScene
中调用的函数。在这个函数中,有一个NSLayoutConstraint
是用来移动轮播的。每当我调用这个函数时,它都会说它是零。这是我的一些代码:
在我的 GameScene
里面:
let storyboard: UIStoryboard = UIStoryboard.init(name: "Main", bundle: nil)
let firstViewController: GameViewController = storyboard.instantiateViewControllerWithIdentifier("Load-up") as! GameViewController
firstViewController.start()
在我的 GameViewController
里面:
func start() {
// Constraint
top.constant = 100
UIView.animateWithDuration(2){
self.view.layoutIfNeeded()
}
}
如果您需要更多信息,请随时问我。提前致谢!
那是因为您的视图控制器尚未加载其视图层次结构。 viewController
仅当某些东西向它发送 view
消息时才加载其视图层次结构。系统将在将 view
层次结构显示在屏幕上时自行执行此操作。它发生在像 prepareForSegue:sender:
和 viewWillAppear:
, loadView()
, self.view
.
这样的调用之后
所以这里你的 outlets
仍然是 nil
因为它还没有加载。
只需尝试强制您的 VC 调用 self.view
,然后访问 properties/outlets。
编辑: 添加了示例代码。
let storyboard = UIStoryboard.init(name: "Main", bundle: nil)
let firstViewController = storyboard.instantiateViewControllerWithIdentifier("Load-up") as! GameViewController
debugPrint("Printing for the sake of initializing view of VC: \(firstViewController.view)")
firstViewController.start()
我正在尝试加载另一个 UIViewController
,以便我可以在其中获取 IBOutlets
的数据。我正在使用 Swift 和 Sprite-Kit。我说的UIViewController
叫做GameViewController
。这是我游戏中加载的第一件事。然后它转到我的 GameScene
。这是我尝试实例化我的 GameViewController
的地方。我想这样做是因为我正在使用一个名为 iCarousel
的库,并且我想将它从我的 GameScene
向上移动。但是,iCarousel 只能在 UIViewController
上使用。所以我想在 GameViewController
中调用一个将在 GameScene
中调用的函数。在这个函数中,有一个NSLayoutConstraint
是用来移动轮播的。每当我调用这个函数时,它都会说它是零。这是我的一些代码:
在我的 GameScene
里面:
let storyboard: UIStoryboard = UIStoryboard.init(name: "Main", bundle: nil)
let firstViewController: GameViewController = storyboard.instantiateViewControllerWithIdentifier("Load-up") as! GameViewController
firstViewController.start()
在我的 GameViewController
里面:
func start() {
// Constraint
top.constant = 100
UIView.animateWithDuration(2){
self.view.layoutIfNeeded()
}
}
如果您需要更多信息,请随时问我。提前致谢!
那是因为您的视图控制器尚未加载其视图层次结构。 viewController
仅当某些东西向它发送 view
消息时才加载其视图层次结构。系统将在将 view
层次结构显示在屏幕上时自行执行此操作。它发生在像 prepareForSegue:sender:
和 viewWillAppear:
, loadView()
, self.view
.
所以这里你的 outlets
仍然是 nil
因为它还没有加载。
只需尝试强制您的 VC 调用 self.view
,然后访问 properties/outlets。
编辑: 添加了示例代码。
let storyboard = UIStoryboard.init(name: "Main", bundle: nil)
let firstViewController = storyboard.instantiateViewControllerWithIdentifier("Load-up") as! GameViewController
debugPrint("Printing for the sake of initializing view of VC: \(firstViewController.view)")
firstViewController.start()