【问题标题】:'UIViewController' is not a subtype of 'View Controller' Swift'UIViewController' 不是 'View Controller' Swift 的子类型
【发布时间】:2018-12-05 21:41:48
【问题描述】:

我正在尝试让我的班级LoginInfoClass 访问多个View Controllers 中的信息。但是,xCode 吐出错误 UIViewController is not a subtype of Start_BirthdayVC'。我似乎无法弄清楚为什么 xCode 会吐出那个错误。

class LoginInfo {


    func userInfo() {
        var firstName: String = ""
        var lastName: String = ""
        var dateOfBirth: String = ""
        var email: String = ""

        firstName = NameVC().firstNameText!.text!
        lastName = NameVC().lastNameText!.text!
        dateOfBirth = String(Start_BirthdayVC().datePicker.date) //Error here
        email = Start_EmailVC().emailTextField!.text!



    }


}

【问题讨论】:

  • 你的代码不会做你想做的事,即使它确实编译了,因为你正在分配你的视图控制器的新实例;您需要让视图控制器更新您的模型,而不是让您的模型尝试从视图控制器获取数据,这需要您的模型引用实际的 VC 实例。
  • 您标记的行不应给出该错误。我怀疑您的问题出在其他行,但是根据我的第一条评论,此代码不是您要查找的代码

标签: ios swift


【解决方案1】:

首先,您的 UIViewController 初始化似乎不正确。 第二个问题是你使用必须使用这个:

class Start_BirthdayVC: UIViewController { ... } 你必须发帖Start_BirthdayVC

由于您使用隐式展开的可选项(感叹号),您的代码可能会在运行时崩溃。

通常,firstNameText 之类的 UI 项不会在初始化程序中定义。检查并发布您的代码。

【讨论】:

    【解决方案2】:

    您必须访问 Start_BirthdayVC 的实例,这在this 线程中得到了答复。

    所以尝试改变

    dateOfBirth = String(Start_BirthdayVC().datePicker.date) //Error here
    

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let startBirthdayVC = storyboard.instantiateViewController(withIdentifier: "Start_BirthdayViewController") as! Start_BirthdayVC
    //access startBirthdayVC properties
    

    【讨论】:

      猜你喜欢
      • 2017-07-02
      • 1970-01-01
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多