【问题标题】:error instantiating a viewcontrolelr modally via code通过代码以模态方式实例化 viewcontrolelr 时出错
【发布时间】:2020-08-12 13:32:22
【问题描述】:

为什么使用此代码,第二个视图控制器中的插座会被解包,因为 nil 会导致应用程序崩溃?他们甚至没有出现。如果我尝试访问插座会出现问题,但如果我更改视图的背景则不会。

在视图控制器 1 按钮中:

let vc = SecondViewController.self.createAcertainCustomAppearenceOfVC()
        vc.modalPresentationStyle = .overCurrentContext
        vc.modalTransitionStyle = .crossDissolve
        present(vc, animated: true, completion: nil)

在第二个视图控制器中

final class func createAcertainCustomAppearenceOfVC() -> SecondViewController {
        let VC = SecondViewController()
        VC.view.backgroundColor = .systemRed
//        VC.tappedSecondOut.setTitle("push", for: .normal)
        VC.tappedSecondOut.backgroundColor = .black
        return VC
    }

【问题讨论】:

  • 插座连接到情节提要?如果是这样,您需要从情节提要中实例化视图控制器。
  • 是故事板的出口,但是如何调用 createAcertainCustomAppearenceOfVC 从故事板实例化?

标签: swift instance modalviewcontroller


【解决方案1】:

您正在尝试实例化在情节提要中有插座的视图控制器,您需要根据情节提要名称和在界面生成器中设置的视图控制器标识符来实例化控制器。

final class func createAcertainCustomAppearenceOfVC() -> SecondViewController? {
    let storyboard = UIStoryboard.init(name: "Main", bundle: nil)
    return storyboard.instantiateViewController(withIdentifier: "secondViewControllerIdentifier") as? SecondViewController
}

【讨论】:

  • 如何设置按钮标题,标签的文字?
  • 你问的不是这个
  • 故事板文件的名称是什么?
  • "secondStoryboard"
  • 那你需要把storyboard实例化改成UIStoryboard.init(name: "secondStoryboard", bundle: nil)
猜你喜欢
  • 2015-05-08
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
相关资源
最近更新 更多