【问题标题】:Call a second view from the same storyboard with the same ViewController class从具有相同 ViewController 类的相同情节提要中调用第二个视图
【发布时间】:2018-02-13 09:34:29
【问题描述】:

我在主情节提要中使用相同的视图控制器类创建了第二个视图控制器。我为此视图创建了一个出口。

如果单击了按钮,我想在第一个视图上添加第二个视图。 我怎么称呼这第二个视图?

secondViewController的代码:

@IBOutlet weak var secondView: UIView!

override func viewDidLoad() {
    super.viewDidLoad()
    self.view = secondView
}

override func loadView() {
    super.loadView()
    //  Fatal error: Unexpectedly found nil while unwrapping an Optional value
    self.view.addSubview(informationView)
}

firstViewController 的代码,这里我调用了 secondView 并将其放在一个平面中:

       let secondViewController:UIViewController = SecondViewController()
       let plane = SCNPlane(width: CGFloat(0.1), height: CGFloat(0.1))
       plane.firstMaterial?.diffuse.contents = secondViewController.view

我只得到一个白屏,也没有显示背景颜色。

【问题讨论】:

  • 你想让 secondViewcontroller 在 firstViewController 里面吗?或者,从 firstViewController 移动到 secondViewcontroller ?/
  • 是的,我在 firstViewController 中调用了 secondViewController。但是第二个视图控制器的视图没有显示,它是白色的。那么如何在第一个视图上加载第二个视图?
  • 不确定您想要实现什么,但您的代码中有一些问题:1)您没有在 viewDidLoad 中分配 self.view(为时已晚 - 如果需要,请在 loadView 中执行) 2) 你不能调用 super.loadView() (查看文档) 3) 是的,你得到一个致命错误,因为视图还没有在 loadView 中创建——你只有在你想自己分配 self.view 时才覆盖这个人。您应该改为在 viewDidLoad 中添加子视图。
  • @tanzolone 非常感谢!如果我将 addSubview 添加到 viewDidLoad 我会收到以下错误:线程 1:EXC_BAD_ACCESS (code=2, address=0x16ef83fe0)

标签: ios swift arkit


【解决方案1】:

1:你应该像这里一样为你的视图控制器设置一个故事板ID

2:那么你应该像这样实例化它:

guard let secondViewController = storyboard?.instantiateViewController(withIdentifier: "MyViewController") as? MyViewControllerClass else { return }

然后用你的 secondViewController 做你想做的一切。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2021-01-02
    • 1970-01-01
    相关资源
    最近更新 更多